使用RelaxNG我如何允许任何元素具有属性“myattribute” - 即定义全局属性

时间:2012-02-21 02:25:37

标签: xml relaxng

有没有办法在我的语法中声明一个全局可用的属性?

也就是说,我希望任何元素都能拥有某个属性。

或者我想定义一个可以具有“id”属性的元素列表。

1 个答案:

答案 0 :(得分:1)

问题的示例解决方案:

<?xml version="1.0" encoding="UTF-8"?>
<grammar xmlns="http://relaxng.org/ns/structure/1.0"
    datatypeLibrary="http://www.w3.org/2001/XMLSchema-datatypes">
    <start>
        <ref name="testDef"/>
    </start>
    <define name="testDef">
        <element name="test">
            <ref name="commonAttributes"/>
        </element>
    </define>
    <define name="commonAttributes">
        <attribute name="id">
            <data type="ID"/>
        </attribute>
        <attribute name="otherCommonAttr">
            <data type="string"/>
        </attribute>
    </define>
</grammar>

您必须在每个元素中声明对公共属性定义的引用,例如上例中的元素test