0

Relax NGで要素の内容に全く制限がないという書き方はありますか?

XMLスキーマでは、このようなことが明らかに可能です

<xs:sequence>
   <xs:any namespace="##targetNamespace" processContents="lax"
       minOccurs="0" maxOccurs="unbounded"/>
</xs:sequence>

これと同等のことを Relax NG で行うことはできますか?

4

2 に答える 2

2

私はこの解決策を提案し、属性と要素の宣言を分割し、mixed要素を使用して混合コンテンツを許可します。

<?xml version="1.0" encoding="UTF-8"?>
<grammar xmlns="http://relaxng.org/ns/structure/1.0">
    <start>
        <ref name="anyElement"/>
    </start>
    <define name="anyElement">
        <element>
            <anyName/>
            <ref name="anyAttributes"/>
            <mixed>
                <zeroOrMore>
                    <ref name="anyElement"/>
                </zeroOrMore>
            </mixed>
        </element>
    </define>
    <define name="anyAttributes">
        <zeroOrMore>
            <attribute>
                <anyName/>
            </attribute>
        </zeroOrMore>
    </define>
</grammar>
于 2012-12-05T16:38:35.470 に答える
0

これが最善の方法かどうかはわかりませんが、Relax NG 仕様の「任意の」定義からこれを採用しました。

<?xml version="1.0" encoding="UTF-8"?>
<grammar xmlns="http://relaxng.org/ns/structure/1.0"
    xmlns:a="http://relaxng.org/ns/compatibility/annotations/1.0"
    datatypeLibrary="http://www.w3.org/2001/XMLSchema-datatypes">
    <start>
        <ref name="Anything"/>
    </start>
    <define name="Anything">
        <zeroOrMore>
            <choice>
                <element>
                    <anyName/>
                    <ref name="Anything"/>
                </element>
                <attribute>
                    <anyName/>
                </attribute>
                <text/>
            </choice>
        </zeroOrMore>
    </define>
</grammar>
于 2012-11-16T22:03:23.630 に答える