说我有以下xml:
<?xml version="1.0" encoding="ISO-8859-1"?>
<xsl:stylesheet version="1.0"
xmlns:xsl="http://www.w3.org/1999/XSL/Transform">
<xsl:template match="/*">
<display>
<xsl:for-each select="logline_t">
<xsl:text disable-output-escaping="yes"><</xsl:text> <xsl:value-of select="./line_1" <xsl:text disable-output-escaping="yes">></xsl:text>
<xsl:text disable-output-escaping="yes"><</xsl:text> <xsl:value-of select="./line_2" <xsl:text disable-output-escaping="yes">></xsl:text>
<xsl:text disable-output-escaping="yes"><</xsl:text> <xsl:value-of select="./line_3" <xsl:text disable-output-escaping="yes">></xsl:text>
</xsl:for-each>
</display>
</xsl:template>
</xsl:stylesheet>
有没有办法为文档中出现的所有 xsl:text 设置 disable-output-escaping="yes" ?
我知道有一个选项可以放置 < xsl:output method="text"/> 并且每次都像 & lt; 出现时,会出现一个<,但问题是有时在line_1、line_2或line_3的值中,有一个“$lt;” 我不想改变(也就是说,我只需要改变两者之间的任何东西)
这就是我想要完成的。我有这个xml:
<readlog_l>
<logline_t>
<hora>16:01:09</hora>
<texto>Call-ID: 663903<hola>396@127.0.0.1</texto>
</logline_t>
</readlog_l>
而这个翻译:
<?xml version="1.0" encoding="ISO-8859-1"?>
<xsl:stylesheet version="1.0"
xmlns:xsl="http://www.w3.org/1999/XSL/Transform">
<xsl:template match="/*">
<display>
<screen name="<xsl:value-of select="name(.)"/>">
<xsl:for-each select="logline_t">
< field name="<xsl:for-each select="*"><xsl:value-of select="."/></xsl:for-each>" value="" type="label"/>
</xsl:for-each>
</screen>
</display>
</xsl:template>
</xsl:stylesheet>
我希望这是输出:
<?xml version="1.0"?>
<display>
<screen name="readlog_l">
<field name="16:01:09 Call-ID: 663903<hola>396@127.0.0.1 " value="" type="label">
</screen>
</display>
请注意,我需要字段名称中的“<”不要被转义,这就是我不能使用输出方法文本的原因。
另外,请注意,这是一个示例,翻译要大得多,所以这就是为什么我试图找出如何不为我需要的每个 '<' 或 '>' 编写禁用输出转义。
谢谢!