gpt4 book ai didi

xml - 如何使用 XSLT 从我的 XML 中删除换行符?

转载 作者:数据小太阳 更新时间:2023-10-29 02:04:24 26 4
gpt4 key购买 nike

我有这个 XSLT:

<xsl:strip-space elements="*" />
<xsl:template match="math">
<img class="math">
<xsl:attribute name="src">http://latex.codecogs.com/gif.latex?<xsl:value-of
select="text()" /></xsl:attribute>
</img>
</xsl:template>

应用于此 XML 的内容(注意换行符):

<math>\text{average} = \alpha \times \text{data} + (1-\alpha) \times
\text{average}</math>

不幸的是,转换创建了这个:

<img
class="math"
src="http://latex.codecogs.com/gif.latex?\text{average} = \alpha \times \text{data} + (1-\alpha) \times&#10;&#9;&#9;&#9;&#9;&#9;\text{average}" />

注意空白字 rune 字。虽然它有效,但它非常困惑。我怎样才能避免这种情况?

最佳答案

使用 normalize-space() 是不够的功能,因为它正在离开中间空间!

这是一个简单而完整的解决方案:

<xsl:stylesheet version="1.0"
xmlns:xsl="http://www.w3.org/1999/XSL/Transform">
<xsl:output omit-xml-declaration="yes"/>
<xsl:strip-space elements="*" />

<xsl:template match="math">
<img class="math">
<xsl:attribute name="src">http://latex.codecogs.com/gif.latex?<xsl:value-of
select="translate(.,' &#9;&#10;', '')" /></xsl:attribute>
</img>
</xsl:template>
</xsl:stylesheet>

当此转换应用于提供的 XML 文档时:

<math>\text{average} = \alpha \times \text{data} + (1-\alpha) \times
\text{average}</math>

产生了想要的、正确的结果:

<img class="math" src="http://latex.codecogs.com/gif.latex?\text{average}=\alpha\times\text{data}+(1-\alpha)\times\text{average}" />

请注意:

  1. XPath 1.0的使用 translate() 函数去除所有不需要的字符。

  2. 没有必要使用replace()函数在这里 -- 可能无法使用它,因为它仅在 XPath 2.0 中可用。

关于xml - 如何使用 XSLT 从我的 XML 中删除换行符?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/2979603/

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