带有attribute和anyType子元素的XML Schema元素

时间:2013-12-09 07:01:51

标签: xml xsd xsd-validation

我不太熟悉XML模式,但我希望有一个模式允许元素具有任何类型的子名称属性。 例如,元素myType:

<myType name="type1">
    <value>my value</value>
    <country>US</country>
</myType>

我尝试过(显然不起作用):

<xsd:element name="myType" minOccurs="1" maxOccurs="unbounded" type="xsd:anyType">
    <xsd:complexType>
        <xsd:attribute name="name" type="xsd:string" use="required"/>
    </xsd:complexType>
</xsd:element>

1 个答案:

答案 0 :(得分:1)

此XML:

<?xml version="1.0" encoding="UTF-8"?>
<myType name="type1">
    <value>my value</value>
    <country>US</country>
</myType>

根据此XSD有效:

<?xml version="1.0" encoding="utf-8"?>
<xsd:schema xmlns:xsd="http://www.w3.org/2001/XMLSchema">
  <xsd:element name="myType">
    <xsd:complexType>
      <xsd:sequence>
        <xsd:any processContents="lax" maxOccurs="unbounded"/>
      </xsd:sequence>
      <xsd:attribute name="name" type="xsd:string" use="required"/>
    </xsd:complexType>
  </xsd:element>
</xsd:schema>

<强>解释

  • xsd:any项允许任何元素成为myType的孩子。
  • xsd:any/@processContents="lax"设置“指示 XML处理器以can-do为基础验证元素内容:它 将验证它可以获取模式的元素和属性 信息,但它不会为那些无法获得的信号发出错误信号 任何架构信息。“