我處理以下的(例如)XML:XSL short`value-of` with`disable-output-escaping`?
<?xml version="1.0"?>
<root>& & &</root>
通過以下(實施例)XSL:
<?xml version="1.0"?>
<xsl:stylesheet version="1.0">
<xsl:output
method="html"
version="4.0"
encoding="UTF-8"
omit-xml-declaration="yes"
/>
<xsl:template match="/">
<input value="{/root}" />
</xsl:template>
</xsl:stylesheet>
使用Python和lxml
(libxslt-1.1.17
),並且我發現了以下輸出:
<input value="&amp; &amp; &amp;" />
據我所知,我可以解決這個與以下模板:
<xsl:template match="/">
<input>
<xsl:attribute name="value">
<xsl:value-of
select="/root"
disable-output-escaping="yes"
/>
</xsl:attribute>
</input>
</xsl:template>
但這是一個很多的打字。在PHP中使用XSL之後,我不記得使用這種方法來使用簡寫形式value-of
來取消引用XML實體。有沒有一個簡短的解決方法,所以我們不必繼續輸入以上所有內容?
我無法重現您的問題。你確定你的發佈示例輸入和樣式表是完整的並且實際證明了問題(至少樣式表缺少'xsl'命名空間聲明)?會議記錄可在這裏找到:http://pastebin.com/rbMhBXRm – 2010-12-13 13:26:31
你的輸入源有三個&&amp;符號字符,它們碰巧被編碼爲字符實體(它應該是)。沒有辦法將它輸出爲像'& amp'這樣的「HTML編碼」,除非它們不是像第一個字符實體那樣的字符實體,而是像在CDATA部分中那樣的五個字符'&'。 – 2010-12-13 14:29:09