source: branches/dev/html/test/adachi/PLLagger/Lib/XML/Feed/schemas/rss10.rnc @ 14681

Revision 14681, 4.4 KB checked in by adati, 17 years ago (diff)
Line 
1<?xml version='1.0' encoding='UTF-8'?>
2<!-- http://www.xml.com/lpt/a/2002/01/23/relaxng.html -->
3<!-- http://www.oasis-open.org/committees/relax-ng/tutorial-20011203.html -->
4<!-- http://www.zvon.org/xxl/XMLSchemaTutorial/Output/ser_wildcards_st8.html -->
5
6<grammar xmlns='http://relaxng.org/ns/structure/1.0'
7        xmlns:rdf='http://www.w3.org/1999/02/22-rdf-syntax-ns#'
8        xmlns:xsi='http://www.w3.org/2001/XMLSchema-instance'
9        ns='http://purl.org/rss/1.0/'
10        datatypeLibrary='http://www.w3.org/2001/XMLSchema-datatypes'>
11
12    <start>
13        <element name='RDF' ns='http://www.w3.org/1999/02/22-rdf-syntax-ns#'>
14            <ref name='RDFContent'/>
15        </element>
16    </start>   
17
18    <define name='RDFContent' ns='http://purl.org/rss/1.0/'>
19        <interleave>
20            <element name='channel'>
21                <ref name='channelContent'/>
22            </element>
23            <optional>
24                <element name='image'><ref name='imageContent'/></element>
25            </optional>
26            <oneOrMore>
27                <element name='item'><ref name='itemContent'/></element>
28            </oneOrMore>
29        </interleave>
30    </define>
31
32     <define name='channelContent' combine="interleave">
33        <interleave>
34            <element name='title'><data type='string'/></element>
35            <element name='link'><data type='anyURI'/></element>
36            <element name='description'><data type='string'/></element>
37            <element name='image'>
38                <attribute name='resource' ns='http://www.w3.org/1999/02/22-rdf-syntax-ns#'>
39                    <data type='anyURI'/>
40                </attribute>
41            </element>
42            <element name='items'>
43                    <ref name='itemsContent'/>
44            </element>
45            <attribute name='about' ns='http://www.w3.org/1999/02/22-rdf-syntax-ns#'>
46                <data type='anyURI'/>
47            </attribute>
48        </interleave>
49    </define>
50   
51        <define name="itemsContent">
52            <element name="Seq" ns='http://www.w3.org/1999/02/22-rdf-syntax-ns#'>
53                <oneOrMore>
54                    <element name="li" ns='http://www.w3.org/1999/02/22-rdf-syntax-ns#'>
55                        <choice>
56                            <attribute name='resource'>    <!-- Why doesn't RDF/RSS1.0 ns qualify this attribute? -->
57                                <data type='anyURI'/>
58                            </attribute>
59                            <attribute name='resource' ns='http://www.w3.org/1999/02/22-rdf-syntax-ns#'>
60                                <data type='anyURI'/>
61                            </attribute>
62                        </choice>
63                    </element>
64                </oneOrMore>
65            </element>
66        </define>
67       
68    <define name='imageContent'>
69        <interleave>
70            <element name='title'><data type='string'/></element>
71            <element name='link'><data type='anyURI'/></element>
72            <element name='url'><data type='anyURI'/></element>
73            <attribute name='about' ns='http://www.w3.org/1999/02/22-rdf-syntax-ns#'>
74                <data type='anyURI'/>
75            </attribute>
76        </interleave>
77    </define>
78
79    <define name='itemContent'>
80        <interleave>
81            <element name='title'><data type='string'/></element>
82            <element name='link'><data type='anyURI'/></element>
83            <optional><element name='description'><data type='string'/></element></optional>
84            <ref name="anyThing"/>
85            <attribute name='about' ns='http://www.w3.org/1999/02/22-rdf-syntax-ns#'>
86                <data type='anyURI'/>
87            </attribute>
88        </interleave>
89    </define>           
90           
91
92        <define name='anyThing'>
93            <zeroOrMore>
94                <choice>
95                    <text/>
96                    <element>
97                        <anyName>
98                            <except>
99                                <nsName/>
100                            </except>
101                        </anyName>
102                        <ref name='anyThing'/>
103                        <zeroOrMore>
104                            <attribute>
105                              <anyName/>
106                            </attribute>
107                        </zeroOrMore>
108                    </element>
109                </choice>
110            </zeroOrMore>
111            </define>
112           
113</grammar>
Note: See TracBrowser for help on using the repository browser.