[英]remove xmlns attribute from namespace prefix node
我正在嘗試使用XSLT創建Edge Side Includes html塊。
這是XSLT示例
<xsl:stylesheet version="1.0"
xmlns:xsl="http://www.w3.org/1999/XSL/Transform"
xmlns:esi="http://www.edge-delivery.org/esi/1.0"
exclude-result-prefixes="xsl esi">
<xsl:output method="html"
media-type="text/html"
version="1.0"
encoding="UTF-8"
indent="no"
omit-xml-declaration="yes"/>
<xsl:template match="/">
<esi:vars>
<xsl:text>some text goes here</xsl:text>
</esi:vars>
</xsl:template>
</xsl:stylesheet>
雖然轉換本身是可行的,但輸出是這樣的:
<esi:vars xmlns:esi="http://www.edge-delivery.org/esi/1.0">some text goes here</esi:vars>
問題是,xmlns:esi屬性嚴重破壞了ESI執行。 如果我手動刪除該屬性(例如:打開HTML並將其刪除,然后再次保存代碼塊),則一切正常。
問題:如何從HTML輸出中刪除xmlns:esi? 我嘗試將它包含在“排除結果前綴”中,但沒有用。
將工作的示例輸出:
<esi:vars>some text goes here</esi:vars>
問題:如何從HTML輸出中刪除xmlns:esi? 我嘗試將它包含在“排除結果前綴”中,但沒有用。
帶有輸出方法xml的XSLT無法產生格式不正確的XML。
當手動刪除名稱空間聲明時, "esi:"
前綴將不與任何名稱空間綁定,因此整個文檔的格式將不正確。
根據ESI規范,通常必須在文檔的頂部元素( <html>
)中聲明esi命名空間 。
試試這個 :
<xsl:stylesheet version="1.0" xmlns:xsl="http://www.w3.org/1999/XSL/Transform"
xmlns:esi="http://www.edge-delivery.org/esi/1.0">
<xsl:output indent="no" omit-xml-declaration="yes"/>
<xsl:template match="/">
<html xmlns:esi="http://www.edge-delivery.org/esi/1.0">
<esi:vars>
<xsl:text>some text goes here</xsl:text>
</esi:vars>
</html>
</xsl:template>
</xsl:stylesheet>
產生 :
<html xmlns:esi="http://www.edge-delivery.org/esi/1.0">
<esi:vars>some text goes here</esi:vars>
</html>
使用任何輸入,此樣式表:
<xsl:stylesheet version="1.0" xmlns:xsl="http://www.w3.org/1999/XSL/Transform">
<xsl:output method="text"/>
<xsl:template match="/">
<xsl:text><esi:vars></xsl:text>
<xsl:text>some text goes here</xsl:text>
<xsl:text></esi:vars></xsl:text>
</xsl:template>
</xsl:stylesheet>
結果:
<esi:vars>some text goes here</esi:vars>
注意 :對於格式不正確的輸出,您只能使用DOE或TEXT序列化。
我找到了專業的方法。 正確的答案取決於以下幾點:
<xsl:stylesheet
version="1.0" xmlns:asp="remove"
xmlns:xsl="http://www.w3.org/1999/XSL/Transform"
xmlns:xsd="http://www.w3.org/2001/XMLSchema"
xmlns:app="http://myNamespace.com/app"
exclude-result-prefixes="app">
在此使用此功能排除前綴
exclude-result-prefixes
有關更多信息: http : //msdn.microsoft.com/zh-cn/library/ms256204.aspx
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.