Разрешить теги без пространства имен в XML-схеме - PullRequest
0 голосов
/ 26 января 2012

Могу ли я как-нибудь разрешить html-теги (или отличные от my: пространство имен) внутри тега template?

<?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 Ответ

1 голос
/ 26 января 2012

Вы можете ссылаться на любой элемент или complexType из другой схемы, если

  1. Они определены глобально
  2. Вы import/include эти схемы / xsd
  3. Затем вы ссылаетесь, используя правильное пространство имен (targetNamespace)

Если вы хотите использовать html, вам действительно нужно использовать xhtml. Найти детали пространства имен здесь http://www.w3.org/1999/xhtml/

учебник по импорту

xsd: учебник по импорту

...