2012-01-26 40 views
0

我可以以某種方式在'模板'標記內部允許使用html標記(或不是'my:' - namespaced)嗎?允許XML模式中的非名稱空間標記

<?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. 它們全球定義爲
  2. import/include這些模式/ XSD
  3. 然後您參考使用正確的命名空間(targetNamespace

如果你想使用的HTML,那麼你真的需要使用xhtml。發現這裏的命名空間細節http://www.w3.org/1999/xhtml/

進口教程

xsd:import tutorial

+0

嗯,所以我應該把XHTML命名空間,使我的例子工作? – spacevillain

+0

@spacevillain請參閱我的編輯。添加教程供您閱讀 –

+0

嗨Pangea,當涉及到「任何元素或複雜類型」時,您的回答有點過於嚴格;我會用「任何內容」。另外,聲明你嚴格需要import/include是不正確的。您可以在名稱空間中使用通配符來指定特定的元素/屬性,從而允許那些不一定包含這些模式的用戶。 –

相關問題