如何验证命名空间的架构,而不是完整的文档?

时间:2012-08-07 09:36:52

标签: validation xsd schema relaxng

我有这样的文件:

<d:block xmlns:d="D" xmlns:b="B" xmlns="default" name="popover">
  <d:description>...</d:description>
  <d:sample>
    <b:popover>
      ...some b:stuff...
    </b:popover>
   </d:sample>
</d:block>

本文档的模式如下:

<grammar xmlns="http://relaxng.org/ns/structure/1.0">
    <start>
        <element name="block" ns="D">
            <attribute name="name"/>
            <element name="description">
                <text/>
            </element>
            <element name="sample">
                <ref name="anything"/>
            </element>
        </element>
    </start>
    <define name="anything">
        <element>
            <anyName>
                <except>
                    <nsName ns="D"/>
                </except>
            </anyName>
            <zeroOrMore>
                <choice>
                    <attribute>
                        <anyName/>
                    </attribute>
                    <text/>
                    <ref name="anything"/>
                </choice>
            </zeroOrMore>
        </element>
    </define>
</grammar>

“Anything”字面意思是除D-namespaced之外的任何东西。

我想为B命名空间创建另一个模式,以便对任何包含B:namespace的任意XML使用它。

如何为命名空间创建Schema,而不是为完整文档创建?

无法得到这个。

1 个答案:

答案 0 :(得分:0)

这种模式应该有效。您只需在名为define的{​​{1}}元素中定义B名称空间的元素。

BElements