XSD:定义具有任何名称的元素

时间:2010-01-18 09:55:37

标签: xml xsd msxml

由于某些系统的限制,我们需要使用格式有点不方便的XML。那些我们需要转变为方便的形式。

问题:如何在XSD架构中定义具有以下属性的元素:

  • 没有孩子
  • 没有任何属性
  • 有任何名称​​(这是造成问题的原因)

1 个答案:

答案 0 :(得分:6)

您可以将<xsd:any />元素与Xml Schema Instance type attribute一起使用。

<强>模式

<?xml version="1.0" encoding="utf-8" ?>
<xsd:schema attributeFormDefault="qualified" elementFormDefault="qualified" xmlns:xsd="http://www.w3.org/2001/XMLSchema">
    <xsd:element name="root">
        <xsd:complexType>
            <xsd:sequence maxOccurs="unbounded">
                <xsd:any processContents="strict" namespace="##local"></xsd:any>
            </xsd:sequence>
        </xsd:complexType>
    </xsd:element>
    <xsd:simpleType name="st">
        <xsd:restriction base="xsd:string" />
    </xsd:simpleType>
</xsd:schema>

测试Xml实例

<?xml version="1.0" encoding="utf-8"?>
<root xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance">
    <!-- valid -->
    <one xsi:type="st">value one</one>
    <emptyone xsi:type="st"/>

    <!-- invalid -->
    <two name="myname" xsi:type="st">value two</two>

    <!-- invalid -->
    <three xsi:type="st">
        <four xsi:type="st">value four</four>
    </three>
</root>

<强>结论

您无法强制执行 xsd架构单独中的简单类型。