<?xml version="1.0" encoding="utf-8"?>
-<element name="page"
- ns="http://cielonegro.org/schema/Rakka/Page/1.0"
+<grammar ns="http://cielonegro.org/schema/Rakka/Page/1.0"
datatypeLibrary="http://www.w3.org/2001/XMLSchema-datatypes"
xmlns="http://relaxng.org/ns/structure/1.0">
- <optional>
- <element name="updateInfo">
- <!-- 旧リビジョン -->
- <attribute name="oldRevision">
- <!-- HXT が對應してゐない。
- <data type="nonNegativeInteger" />
- -->
- <text />
- </attribute>
-
- <!-- ページ移動 -->
+ <start>
+ <element name="page">
<optional>
- <element name="move">
- <attribute name="from">
+ <element name="updateInfo">
+ <!-- 旧リビジョン -->
+ <attribute name="oldRevision">
+ <!-- HXT が對應してゐない。
+ <data type="nonNegativeInteger" />
+ -->
<text />
</attribute>
+
+ <!-- ページ移動 -->
+ <optional>
+ <element name="move">
+ <attribute name="from">
+ <text />
+ </attribute>
+ </element>
+ </optional>
</element>
+
+ <!-- 猶、更新時に type 屬性を空欄にすると自動判別される。但し
+ binaryData の場合のみ許される。 -->
</optional>
- </element>
- <!-- 猶、更新時に type 屬性を空欄にすると自動判別される。但し
- binaryData の場合のみ許される。 -->
- </optional>
+ <optional>
+ <!-- ログインしてゐないユーザーの編集を禁止するフラグ -->
+ <attribute name="isLocked">
+ <choice>
+ <value>yes</value>
+ <value>no</value>
+ </choice>
+ </attribute>
+ </optional>
- <optional>
- <!-- ログインしてゐないユーザーの編集を禁止するフラグ -->
- <attribute name="isLocked">
<choice>
- <value>yes</value>
- <value>no</value>
+ <!-- リダイレクトの場合 -->
+ <ref name="redirection" />
+
+ <!-- リダイレクトでない場合 -->
+ <ref name="entity" />
</choice>
- </attribute>
- </optional>
+ </element>
+ </start>
- <choice>
- <!-- リダイレクトの場合 -->
+ <define name="redirection">
<attribute name="redirect">
<!-- ページ名 -->
<data type="anyURI" />
</attribute>
-
- <!-- リダイレクトでない場合 -->
+ </define>
+
+ <define name="entity">
<group>
<attribute name="type">
<!-- MIME Type -->
<text />
</element>
</choice>
+
+ <optional>
+ <element name="attachment">
+ <zeroOrMore>
+ <element name="entry">
+ <attribute name="name" />
+ <ref name="anyElement" />
+ </element>
+ </zeroOrMore>
+ </element>
+ </optional>
</group>
- </choice>
-</element>
+ </define>
+
+ <define name="anyElement">
+ <element>
+ <anyName />
+ <zeroOrMore>
+ <choice>
+ <attribute>
+ <anyName />
+ </attribute>
+ <text />
+ <ref name="anyElement" />
+ </choice>
+ </zeroOrMore>
+ </element>
+ </define>
+</grammar>