2013-02-19 52 views
0

HTML標籤我新的XML和HTML和我有一個問題:)子集在XML

在下面的XML:

<element name="itemDescription"> 
    <any minOccurs="0"/>    
</element> 

的「itemDescription」標籤如何能夠支持僅使用ul,li,b,i和span標籤的HTML子集? 目前它被定義爲接受任何XML。

我在這一個上搜了很多 - 但我不能拿出一個解決方案。只有我可能可以使用complexTypes。

有人可以幫助我嗎? :)

thx

+0

定義「支持」。如何檢查該支持在哪一點?你有編輯器在編輯它嗎?您需要驗證它的導入過程? – 2013-02-19 14:40:50

+0

我不知道 - 但應該只限於使用html標記的一部分(描述的那些) – Diemauerdk 2013-02-19 14:51:32

回答

0

請記住,除了類似的語法,HTML與XML很少有關。

你可以看看schema of XHTML並複製你需要的部分,但它可能會更容易實現它們自己。

無論如何,恕我直言,嘗試在XML應用程序中重新實現(X)HTML是不是一個好主意。它可能會更容易要麼

  • 實施類似於HTML的東西,讓應用程序讀取您的XML轉換爲HTML
  • 儲存您的HTML作爲(CDATA)字符串,而不是
  • 不使用HTML但例如lightweight markup language
0

如果要允許一組特定的XHTML元素itemDescription的孩子,你需要做的就是指定這些都是其子女通過定義一個適當的複雜類型什麼。 (如果您的模式旨在爲XSD,那麼您還需要更正現有元素聲明中的語法錯誤。)從您提到的特定XHTML元素中,我想您還希望允許idemDescription包含字符數據。

itemDescription的聲明,沒有工作會是這個樣子:

<xsd:element name="itemDescription"> 
    <xsd:complexType mixed="true"> 
    <xsd:choice minOccurs="0" maxOccurs="unbounded"> 
     <xsd:element ref="xhtml:ul"/> 
     <xsd:element ref="xhtml:b"/> 
     <xsd:element ref="xhtml:i"/> 
    </xsd:choice> 
    </xsd:complexType> 
</xsd:element> 

既然你需要參考在XHTML命名空間中的特定項目,則需要導入,以及。這樣做最簡單的方法是,看起來像這樣的導入:

<xsd:import namespace="http://www.w3.org/1999/xhtml"/> 

但在某些時候,你需要將你的XSD驗證直接爲XHTML模式文檔;有些人喜歡做的import語句,而不是在調用的時候,所以他們指定的import語句一個schemaLocation屬性:

<xsd:import namespace="http://www.w3.org/1999/xhtml" 
      schemaLocation="..."/> 

這裏的「...」將需要由一個指針來代替您要使用的XHTML模式。 (建議使用本地副本,因爲W3C makes it excruciatingly slow to retrieve schema documents from their site可以阻止過多的DTD和架構流量。)

由於您說您是XML新手,因此可能有一個完整的架構文檔,其中包含所有內容一個地方。同樣,如果你想在實踐中使用這個,請記住用一個URI替換schemaLocation值。

<?xml version="1.0" encoding="UTF-8"?> 
<xsd:schema xmlns:xsd="http://www.w3.org/2001/XMLSchema" 
    elementFormDefault="qualified"> 

    <xsd:import namespace="http://www.w3.org/1999/xhtml" 
       schemaLocation="..."/> 

    <xsd:element name="itemDescription"> 
    <xsd:complexType mixed="true"> 
     <xsd:choice minOccurs="0" maxOccurs="unbounded"> 
     <xsd:element ref="xhtml:ul"/> 
     <xsd:element ref="xhtml:b"/> 
     <xsd:element ref="xhtml:i"/> 
     </xsd:choice> 
    </xsd:complexType> 
    </xsd:element> 

</xsd:schema>