代码之家  ›  专栏  ›  技术社区  ›  Cosmin

获取子节点的xpath查询,取决于节点名是否以数字开头

  •  0
  • Cosmin  · 技术社区  · 6 年前

    我有以下XML结构:

    <products>
        <C8TJM>
            <code>C8TJM</code>
            <name>Product</name>
            <description>Product description</description>
        </C8TJM>
        <D75KF>
            <code>D75KF</code>
            <name>Product</name>
            <description>Product description</description>
        </D75KF>
        <_89TJX>
            <code>89TJX</code>
            <name>Product</name>
            <description>Product description</description>
        </_89TJX>
    </products>
    

    每个子节点代表一个产品,节点的名称是产品代码。因为XML不允许节点以数字开头,所以会自动在节点名称中添加下划线。

    我事先知道产品代码。

    我必须编写一个xpath查询到:

    • 首先检查产品代码是否以数字开头,如果以数字开头, 然后在其前面加上下划线;
    • 在树上搜索 产品代码和获取描述。

    以后编辑

    已成功写入此变量定义:

    <xsl:variable name="prefixedProductCode">
        <xsl:choose>
            <xsl:when test="contains('0123456789', substring($productCode, 1, 1))">
                <xsl:value-of select="concat('_', $productCode)"/>
            </xsl:when>
            <xsl:otherwise>
                <xsl:value-of select="$productCode" />
            </xsl:otherwise>
        </xsl:choose>
    </xsl:variable>
    

    但我想在XPath查询中即时执行,而不必定义新的变量。

    1 回复  |  直到 6 年前
        1
  •  0
  •   Cosmin    6 年前

    最终实施:

    //products/node()[name() = $productCode]/description