有没有办法写一下,在Relax NG中对元素的内容完全没有限制?
在XML Schema中,显然可以使用
<xs:sequence>
<xs:any namespace="##targetNamespace" processContents="lax"
minOccurs="0" maxOccurs="unbounded"/>
</xs:sequence>
我可以在Relax NG中做相同的操作吗?
答案 0 :(得分:1)
我提出这个解决方案,划分属性和元素声明,并使用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>
答案 1 :(得分:0)
好吧,我不知道这是不是最好的方式,但我已经从#34;任何&#34; 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>