我有一個包含新聞報道的XML文檔,新聞報道的正文元素在純文本中包含p標籤。當我使用XSL檢索身體時,例如如何保留標記標籤?
<xsl:value-of select="body" />
p標籤似乎被剝離出來。我正在使用Visual Studio 2005的XSL實現。
有沒有人有任何想法如何避免這種情況?謝謝。
我有一個包含新聞報道的XML文檔,新聞報道的正文元素在純文本中包含p標籤。當我使用XSL檢索身體時,例如如何保留標記標籤?
<xsl:value-of select="body" />
p標籤似乎被剝離出來。我正在使用Visual Studio 2005的XSL實現。
有沒有人有任何想法如何避免這種情況?謝謝。
嘗試使用
<xsl:copy-of select="body"/>
代替。從w3schools' documentation on same:
的
<xsl:copy-of>
元件創建當前節點的 副本。注意:命名空間節點,子節點 和當前節點的屬性也自動複製爲 !
如果您控制輸入文檔,CDATA是正確的選擇。
這是因爲引擎正在解釋標籤(不包括輸出)。您需要使用「disable-output-escaping = yes | no」屬性指定您想要的內容「原樣」。
<xsl:value-of select="body" disable-output-escaping="yes"/>
我試過這個,但沒有任何區別。 – gilles27 2008-10-02 13:31:35
嘗試使用false ...我總是不記得正確使用 – 2008-10-02 13:32:43
如果你沒有在輸入文檔控制,複製的應工作:
從http://www.xml.com/pub/a/2000/06/07/transforming/index.html
「的XSL:複製的元素,在另一方面,可以複製如果xsl:copy-of元素的select屬性具有適當的值,則包括屬性,在下面的示例中,模板複製標題元素節點及其所有後代節點 - in換句話說,完整的標題元素,包括它們的標籤,子元素和屬性:「
<xsl:template match="title">
<xsl:copy-of select="*"/>
</xsl:template>
XML元素的值 - 不僅在XSLT中,而且在DOM實現中都是如此 - 是所有後代文本節點的串聯。在XSLT中,value-of
發出元素的值,而copy-of
發出該元素的副本。
謝謝,但我無法更改文檔的格式。 – gilles27 2008-10-02 13:30:56
如果我使用CDATA封裝我的嵌套HTML,我得到了文字HTML,我想保留換行符(即段落標籤)。 – PeterX 2013-11-22 07:06:46