gpt4 book ai didi

xml - Xpath函数去除空格

转载 作者:数据小太阳 更新时间:2023-10-29 01:47:25 25 4
gpt4 key购买 nike

我正在尝试使用 XSL 和 Xpath 函数从名为 name 的 XML 属性中删除所有空白并将其变为小写。目前我有类似的东西

 <xsl:variable name="linkName">
<xsl:value-of select="normalize-space(name)"/>
</xsl:variable>

这会删除开头和结尾的空白,但不会删除中间的空白。有什么建议吗?

处理和更改 XML 数据的最佳实践是什么,因为您似乎可以使用

<xsl:value-of select="x"/>  

直接放在 HTML 中

<xsl:attribute name="y">
<xsl:value-of select="x"/>

或使用

<xsl:variable name="x">

我不太确定这些差异或何时应该使用它们。非常感谢任何帮助。

盟友

最佳答案

正如 Tim Robinson 指出的那样,translate 可以解决问题。 (我不会称它为“hack”,但在我与 XSLT 的关系中,长期以来我一直处于“识别我的折磨者”阶段。)如果你使用这样的东西,你的代码将更具可读性:

<xsl:variable name="uc" value="ABCDEFGHIJKLMNOPQRSTUVWXYZ"/>
<xsl:variable name="lc" value="abcdefghijklknopqrstuvwxyz"/>
<xsl:variable name="ws" value=" &#13;&#10;&#09"/>

...这是 globals.xslt 文件的一部分,我将其包含在我编写的大多数转换的顶部。然后这个:

<xsl:value-of select="translate(x, concat($uc, $ws), $lc)"/>

将每个大写字母转换为对应的小写字母,并将每个空白字符转换为空字符。

通常您使用 xsl:variable 的原因是为了使代码更具可读性(如上例所示),或者存储无法以其他方式有效计算的中间结果。第四种将数据输入输出的方法是您没有提到的,而且非常有用:属性值模板。所有这些都做同样的事情:

<link>
<xsl:attribute name="name">
<xsl:value-of select="translate(name, concat($uc, $ws), $lc)"/>
</xsl:attribute>
</link>

<link>
<xsl:attribute name="name" value="translate(name, concat($uc, $ws), $lc)"/>
</link>

<xsl:variable name="linkName" value="translate(name, concat($uc, $ws), $lc)"/>
<link name="{$linkName}"/>

在这种特殊情况下,最后两个中的哪一个更简单、更清晰是有争议的。但大多数情况下,情况并非如此:将值的计算与它们插入输出的方式分开可以使两者更容易理解,就像使用 AVT 而不是执行相同操作的更冗长的 XSLT 结构一样。

关于xml - Xpath函数去除空格,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/1852571/

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