gpt4 book ai didi

xslt - 为每个 xsl :text tag in the xml 设置禁用输出转义 ="yes"

转载 作者:行者123 更新时间:2023-12-04 00:44:11 25 4
gpt4 key购买 nike

假设我有以下 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">&lt;</xsl:text> <xsl:value-of select="./line_1" <xsl:text disable-output-escaping="yes">&gt;</xsl:text>
<xsl:text disable-output-escaping="yes">&lt;</xsl:text> <xsl:value-of select="./line_2" <xsl:text disable-output-escaping="yes">&gt;</xsl:text>
<xsl:text disable-output-escaping="yes">&lt;</xsl:text> <xsl:value-of select="./line_3" <xsl:text disable-output-escaping="yes">&gt;</xsl:text>
</xsl:for-each>
</display>
</xsl:template>
</xsl:stylesheet>

有没有办法为文档中出现的所有 xsl:text 设置 disable-output-escaping="yes"?

我知道有一个选项可以放 每次都像 <<出现时,将出现 <,但问题是有时在 line_1、line_2 或 line_3 的值中,有一个“$lt;”。我不想改变(也就是说,我只需要改变两者之间的任何东西)

这就是我想要完成的。我有这个 xml:

<readlog_l>
<logline_t>
<hora>16:01:09</hora>
<texto>Call-ID: 663903&lt;hola&gt;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>

&lt;screen name="<xsl:value-of select="name(.)"/>"&gt;

<xsl:for-each select="logline_t">
&lt; field name="<xsl:for-each select="*"><xsl:value-of select="."/></xsl:for-each>" value="" type="label"/&gt;
</xsl:for-each>

&lt;/screen&gt;

</display>
</xsl:template>

</xsl:stylesheet>

我希望这是输出:

<?xml version="1.0"?>
<display>

<screen name="readlog_l">

<field name="16:01:09 Call-ID: 663903&lt;hola&gt;396@127.0.0.1 " value="" type="label">

</screen>
</display>

请注意,我需要字段名称中的“<”不被转义,这就是我不能使用输出方法文本的原因。

另外,请注意,这是一个例子,翻译要大得多,所以这就是为什么我试图找出如何不为我需要的每个“<”或“>”编写禁用输出转义。

谢谢!

最佳答案

感谢您澄清问题。在这种情况下,我相当确定没有必要禁用输出转义。 XSLT 旨在完成您正在做的事情:

<?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="{name(.)}">

<xsl:for-each select="logline_t">
<xsl:variable name="nameContent">
<xsl:for-each select="*">
<xsl:if test="position() > 1"><xsl:text> </xsl:text></xsl:if>
<xsl:value-of select="."/>
</xsl:for-each>
</xsl:variable>
<field name="{$nameContent}" value="" type="label" />
</xsl:for-each>

</screen>

</display>
</xsl:template>

</xsl:stylesheet>

我对这一点有点不清楚:请注意,我需要字段名称中的“<”不被转义,这就是我不能使用输出方法文本的原因。

你指的是哪个<?是“hola”周围的 < 和 > 吗?如果您保留那些未转义的内容,您将得到无效的 XML。示例输出中的 name 属性看起来也有很多输入 XML 中没有的值。这些是从哪里来的?

关于xslt - 为每个 xsl :text tag in the xml 设置禁用输出转义 ="yes",我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/14217412/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com