允许xml架构中的非命名空间标记

时间:2012-01-26 14:51:57

标签: xml xsd xml-validation

我可以以某种方式在'模板中使用html标签(或者除了' my:' -namespaced)。标记

<?xml version="1.0"?>
<my:template xmlns:my="http://my.example.com">

  <my:aa/>

  <my:aa>
    <b>stuff</b>
    <my:aa/>
  </my:aa>

  <my:bb/>
</my:template>

现在我的架构看起来像这样

<?xml version="1.0" encoding="UTF-8"?>
<xs:schema xmlns:xs="http://www.w3.org/2001/XMLSchema"
        xmlns="http://my.example.com"
        xmlns:my="http://my.example.com"
        targetNamespace="http://my.example.com"
        elementFormDefault="qualified"
        attributeFormDefault="unqualified">

<xs:complexType name="MyContent">
  <xs:choice minOccurs="0" maxOccurs="unbounded">
    <xs:element name="aa" type="MyContent"/>
    <xs:element name="bb" type="MyContent"/>
  </xs:choice>
</xs:complexType>

<xs:element name="template" type="MyContent"/>

</xs:schema>

xmllint显示错误

kk.xml:7: element b: Schemas validity error : Element 'b': This element is not expected. Expected is one of ( {http://my.example.com}aa, {http://my.example.com}bb ).
kk.xml fails to validate

1 个答案:

答案 0 :(得分:1)

只要

,您就可以引用其他模式中的任何元素或complexType
  1. 全局定义
  2. import/include那些架构/ xsd
  3. 然后使用正确的命名空间(targetNamespace
  4. 进行引用

    如果你想使用html,那么你真的需要使用xhtml。在此处查找命名空间详细信息http://www.w3.org/1999/xhtml/

    导入教程

    xsd:import tutorial