我正在尝试使用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? 我尝试将它包含在exclude-results-prefixes中,但没有用。
将起作用的示例输出:
<esi:vars>some text goes here</esi:vars>
答案 0 :(得分:2)
问题:如何删除 xmlns:来自HTML输出的esi?一世 尝试将其包括在内 排除结果前缀,但没有 工作
使用输出方法xml的XSLT无法生成非格式良好的XML。
当手动删除名称空间声明时,"esi:"
前缀不会绑定到任何名称空间,因此整个文档的格式不正确。
根据ESI规范,esi名称空间通常必须在文档的顶部元素(<html>
)中声明。
试试这个:
<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>
答案 1 :(得分:2)
使用任何输入,此样式表:
<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序列化。
答案 2 :(得分:1)
我找到了专业的方法。正确答案取决于以下内容:
<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/en-us/library/ms256204.aspx