1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
|
default namespace = "https://launchpad.net/xmlns/2006/bugs"
start = lpbugs
# Data types
boolean = "True" | "False"
lpname = xsd:string { pattern = "[a-z0-9][a-z0-9\+\.\-]*" }
lpbugname = xsd:string { pattern = "[a-z][a-z0-9\+\.\-]*" }
cvename = xsd:string { pattern = "(19|20)[0-9][0-9]-[0-9][0-9][0-9][0-9]" }
non_empty_text = xsd:string { minLength = "1" }
# XXX: jamesh 2006-04-11 bug=105401:
# These status and importance values need to be kept in sync with the
# rest of Launchpad. However, there are not yet any tests for this.
# https://bugs.launchpad.net/bugs/105401
status = (
"NEW" |
"INCOMPLETE" |
"INVALID" |
"WONTFIX" |
"CONFIRMED" |
"TRIAGED" |
"INPROGRESS" |
"FIXCOMMITTED" |
"FIXRELEASED" |
"UNKNOWN")
importance = (
"UNKNOWN" |
"CRITICAL" |
"HIGH" |
"MEDIUM" |
"LOW" |
"WISHLIST" |
"UNDECIDED")
# Content model for a person element. The element content is the
# person's name. For successful bug import, an email address must be
# provided.
person_nobody = (
attribute name { string "nobody" })
person_normal = (
attribute name { lpname }?,
attribute email { non_empty_text },
text)
person = (
person_nobody |
person_normal)
lpbugs = element launchpad-bugs { bug* }
bug = element bug {
attribute id { xsd:integer } &
element private { boolean }? &
element security_related { boolean }? &
element duplicateof { xsd:integer }? &
element datecreated { xsd:dateTime } &
element nickname { lpbugname }? &
# The following will likely be renamed summary in a future version.
element title { text } &
element description { text } &
element reporter { person } &
element status { status } &
element importance { importance } &
element milestone { lpname }? &
element assignee { person }? &
element urls {
element url { attribute href { xsd:anyURI }, text }*
}? &
element cves {
element cve { cvename }*
}? &
element tags {
element tag { lpname }*
}? &
element bugwatches {
element bugwatch { attribute href { xsd:anyURI } }*
}? &
element subscriptions {
element subscriber { person }*
}? &
comment+
}
# A bug has one or more comments. The first comment duplicates the
# reporter, datecreated, title, description of the bug.
comment = element comment {
element sender { person } &
element date { xsd:dateTime } &
element title { text }? &
element text { text } &
attachment*
}
# A bug attachment. Attachments are associated with a bug comment.
attachment = element attachment {
attribute href { xsd:anyURI }? &
element type { "PATCH" | "UNSPECIFIED" }? &
element filename { non_empty_text }? &
# The following will likely be renamed summary in a future version.
element title { text }? &
element mimetype { text }? &
element contents { xsd:base64Binary { minLength = "1" } }
}
|