gpt4 book ai didi

xslt - xsl中的撇号文本比较

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

我对带有撇号符号的文本有疑问

例如我尝试测试这个带有符号的 xml 那么我如何比较?

<xsl:for each select="country[nation='India's]">

这是显示错误的语句

问候
难陀

最佳答案

一种方法是:

<xsl:variable name="apos" select='"&apos;"'/>

<!-- ... later ... -->

<xsl:for-each select="country[nation=concat('India', $apos, 's')]">

这里的问题是双重的:
  • XSLT 没有定义字符串中字符转义的方法。所以'India\'s'不是一个选择。
  • 您必须通过两个不同的评估层。

  • 这些是:
  • XML 格式良好 :XSLT 程序所包含的 XML 文档必须格式正确。您不能违反 XML 规则。
  • XSLT 表达式解析 :生成的属性值字符串(在 XML DOM 解析完成后)必须对 XSLT 引擎有意义。

  • 构造如下:
    <xsl:for-each select="country[nation='India's']">
    <xsl:for-each select="country[nation='India&apos;s']">

    通过 XML 层但违反 XSLT 层,因为在这两种情况下,有效属性值(存储在 DOM 中)都是 country[nation='India's'] ,这显然是 XPath 语法错误。

    构造如下:
    <xsl:for-each select="country[nation=concat('India', "'", 's')]">
    <xsl:for-each select="country[nation=concat("India", "&apos;", "s")]">

    显然违反了 XML 层。 但是它们不会违反 XSLT 层(!),因为它们的实际值(如果 XSLT 文档可以首先被解析)将显示为 country[nation=concat('India', "'", 's')] , 作为 XPath 表达式是完全合法的。

    所以你必须想办法同时通过1层和2层。一种是如上图所示的可变方式。另一种方式是:
    <xsl:for-each select="country[nation=concat('India', &quot;'&quot;, 's')]">

    XSLT 会显示为 country[nation=concat('India', "'", 's')] .

    就个人而言,我发现“可变方式”更容易使用。

    关于xslt - xsl中的撇号文本比较,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/2478743/

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