У меня есть следующий XML, который я пытаюсь преобразовать во внутренний канонический формат. То, что мне нужно сделать, это проверить узел «id» в разделе назначенныйAuthor для определенной корневой строки и получить атрибут расширения на основе этого. Я должен использовать XSLT 1.0, потому что я использую MapTrader BizTalk для запуска этого XSLT.xsl: если не работает как ожидалось
Вот XML:
<?xml version="1.0" encoding="UTF-8" standalone="no"?>
<ClinicalDocument xmlns="urn:hl7-org:v3">
<component>
<structuredBody>
<component>
<section>
<entry>
<act>
<author>
<assignedAuthor>
<id root="1.2.840.113619.21.1.4780296594025264329.2.2" extension="1609858104000010"/>
<id root="2.16.840.1.113883.4.6" extension="1437282605"/>
</assignedAuthor>
</author>
</act>
</entry>
</section>
</component>
</structuredBody>
</component>
</ClinicalDocument>
Вот как я хочу, чтобы выглядеть трансформируется (НПИТЕ только атрибут расширение идентификатора узла, который атрибут корня равен «2.16.840.1.113883.4.6»):
<ns13:Insert>
<ns13:Rows>
<ns13:NPI>1437282605</NPI>
</ns13:Rows>
</ns13:Insert>
Когда я использую этот XSLT (без всеохватывающих шаблоны и такие):
<ns13:Insert>
<ns13:Rows>
<xsl:for-each select="*/*[local-name()='author']/*[local-name()='assignedAuthor']/*[local-name()='id']">
<xsl:if test="../*[local-name()='id']/@root">
<ns13:NPI>
<xsl:value-of select="./@extension" />
</ns13:NPI>
</xsl:if>
</xsl:for-each>
</ns13:Rows>
</ns13:Insert>
я получаю этот результат (ожидается, что это потому, что я не тестирование для конкретной строки атрибута корень):
<ns13:Insert>
<ns13:Rows>
<ns13:NPI>1609858104000010</ns13:NPI>
<ns13:NPI>1437282605</ns13:NPI>
</ns13:Rows>
</ns13:Insert>
Но когда я пытаюсь использовать это, если заявление в XSLT:
<ns13:Insert>
<ns13:Rows>
<xsl:for-each select="*/*[local-name()='author']/*[local-name()='assignedAuthor']/*[local-name()='id']">
<xsl:if test="string(../*[local-name()='id']/@root)='2.16.840.1.113883.4.6'">
<ns13:NPI>
<xsl:value-of select="./@extension" />
</ns13:NPI>
</xsl:if>
</xsl:for-each>
</ns13:Rows>
</ns13:Insert>
I получаем следующий результат (НПИ не появляется, потому что по какой-то причине, если заявление не вычисляемая верно, и я не могу понять, что я делаю неправильно):
<ns13:Insert>
<ns13:Rows>
</ns13:Rows>
</ns13:Insert>
XML-на самом деле путьболее сложный, чем это, и здесь слишком много ссылок, но это формат этого одного раздела компонентов (за вычетом данных, которые не относятся к этому вопросу). XSLT также намного сложнее, но это только одна проблема, с которой я сталкиваюсь. Любая помощь будет оценена по достоинству.
Хорошо, что имеет смысл, и это было проблемой. Большое спасибо. – Ritley572