У меня есть следующая структура 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, без определения новой переменной.