Получение значения элемента на основе некоторых условий в XSLT

Ниже приведен мой исходный XML, где мне нужно получить doc_id, где doc_tag равно «доставляемому». В приведенном ниже примере мне нужен doc_id как 123654789, поскольку doc_tag равен доставляемому, я пробовал разные пути X, но я не мог точно указать на doc_tag как доставляемый

Любая помощь горячо приветствуется.

Спасибо
Венк

<?xml version="1.0" encoding="UTF-8"?>
<root>
    <document>
        <doc_id>321654987</doc_id>
        <doc_tag>Log</doc_tag>
    </document>
    <document>
        <doc_id>123654789</doc_id>
        <doc_tag>deliverable</doc_tag>
    </document>
    <document>
        <doc_id>325698741</doc_id>
        <doc_tag>Log2</doc_tag>
    </document>
    <document>
        <doc_id>369852147</doc_id>
        <doc_tag>nondeliverable</doc_tag>
    </document>
</root>

person Venkata Penumatsa    schedule 11.02.2019    source источник
comment
Можете ли вы показать какие-либо выражения xpath, которые вы пробовали в настоящее время? Спасибо!   -  person Tim C    schedule 11.02.2019
comment
//document[doc_tag="deliverable"]/doc_id/text() выбирает значение doc_id   -  person Marc Stroebel    schedule 11.02.2019
comment
Привет Тим, я попробовал этот xpath ‹xsl:template match=/› ‹xsl:value-of select=root/document/doc_tag='доставляемый' ‹/xsl:template›   -  person Venkata Penumatsa    schedule 11.02.2019
comment
Не могли бы вы отредактировать свой вопрос, включив в него этот шаблон, так как код трудно читать в комментариях. Спасибо!   -  person Tim C    schedule 11.02.2019


Ответы (1)


Если вы хотите получить значение, когда вы находитесь в шаблоне, соответствующем узлу документа

<xsl:template match="/"> 
   <xsl:value-of select="root/document[doc_tag='deliverable']/doc_id" />
</xsl:template>

Квадратные скобки представляют собой условие, по которому выбранные document элементы должны быть отфильтрованы.

person Tim C    schedule 11.02.2019