Запрос XPath для получения подузла в зависимости от того, начинается имя узла с цифры или нет - PullRequest
0 голосов
/ 18 мая 2018

У меня есть следующая структура 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 Ответ

0 голосов
/ 22 мая 2018

Окончательная реализация:

//products/node()[name() = $productCode]/description
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...