как получить значения внутри узла, использующего XSLT - PullRequest
0 голосов
/ 04 сентября 2018
 <Value>
           <ntin>00300231145014
            <additionalDetails>
                                <detail name="reorderQuantity">10000</detail>
                                <detail name="SerialLength">12</detail>
                                <detail name="OriginalNtin"/>
                          </additionalDetails>
                    </ntin>
        </Value>

хочу получить значение ntin 00300231145014

Ответы [ 2 ]

0 голосов
/ 04 сентября 2018

Вам нужно использовать простой X-Path в xsl:value-of для достижения желаемого результата:

<?xml version="1.0" encoding="utf-8"?>
<xsl:stylesheet version="1.0" xmlns:xsl="http://www.w3.org/1999/XSL/Transform">

    <xsl:output method="xml" indent="yes" omit-xml-declaration="yes"/>

    <xsl:template match="/">
        <xsl:value-of select="/Value/ntin[1]/text()[1]"/>
    </xsl:template>

</xsl:stylesheet>
0 голосов
/ 04 сентября 2018

XSLT использует XPath в качестве языка выражений, и в модели данных, общей для XSLT / XPath / XQuery, элемент ntin имеет в качестве первого дочернего узла текстовый узел со строковым значением 00300231145014 , затем второй дочерний узел additionalDetails элемент.

Таким образом, вы можете выбрать /Value/ntin/text()[1] для выбора первого дочернего текстового узла или также /Value/ntin/node()[1] в вашем примере, поскольку первый дочерний узел любого типа является этим текстовым узлом. Однако строковое значение этого узла будет включать пробел после цифр и перед элементом additionalDetails. Таким образом, если вам нужна только строка с цифрами, вы можете использовать normalize-space(/Value/ntin/text()[1]).

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...