如何保留和转义不匹配的元素?
考虑这个 XML 代码:
<root>
blah <foo>blah</foo> blah <bar>blah</bar> blah
</root>
以及他关联的样式表:
<xsl:stylesheet version="1.0" xmlns:xsl="http://www.w3.org/1999/XSL/Transform">
<xsl:output omit-xml-declaration="yes"/>
<xsl:template match="foo">
<strong><xsl:apply-templates/></strong>
</xsl:template>
</xsl:stylesheet>
使用 XSLTProcessor 类 (PHP) 转换后,输出如下:
blah <strong>blah</strong> blah blah blah
但我更想要这个输出(样式表中的未知元素被转义):
blah <strong>blah</strong> blah <bar>blah</bar> blah
我的伪代码建议:
<xsl:stylesheet version="1.0" xmlns:xsl="http://www.w3.org/1999/XSL/Transform">
<xsl:output omit-xml-declaration="yes"/>
<xsl:template match="foo">
<strong><xsl:apply-templates/></strong>
</xsl:template>
<xsl:template match="all elements other than foo (with their attributs :p)">
<xsl:copy-of select="node()" escape="yes"/>
</xsl:template>
</xsl:stylesheet>
我很绝望,因此,如果您有任何保留和转义这些无用元素的解决方案,我将非常高兴!
Considering this XML code:
<root>
blah <foo>blah</foo> blah <bar>blah</bar> blah
</root>
And his associated stylesheet:
<xsl:stylesheet version="1.0" xmlns:xsl="http://www.w3.org/1999/XSL/Transform">
<xsl:output omit-xml-declaration="yes"/>
<xsl:template match="foo">
<strong><xsl:apply-templates/></strong>
</xsl:template>
</xsl:stylesheet>
After transofrmation with the XSLTProcessor class (PHP), here is the output:
blah <strong>blah</strong> blah blah blah
But I rather want this output (unknown elements in the stylesheet are escaped):
blah <strong>blah</strong> blah <bar>blah</bar> blah
My pseudocode proposal:
<xsl:stylesheet version="1.0" xmlns:xsl="http://www.w3.org/1999/XSL/Transform">
<xsl:output omit-xml-declaration="yes"/>
<xsl:template match="foo">
<strong><xsl:apply-templates/></strong>
</xsl:template>
<xsl:template match="all elements other than foo (with their attributs :p)">
<xsl:copy-of select="node()" escape="yes"/>
</xsl:template>
</xsl:stylesheet>
I'm desperate, so if you have any solution for keeping and escaping those useless elements, I'll be very happy!
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(2)
这是我凭空写下的,所以请不要引用我的话:D
Wrote this off the top of my head, so please don't quote me on that :D