Я имею в виду XML-файл (document.xml) через функцию документа. Исходя из значения входного идентификатора xml, я беру соответствующее значение из document.xml. Выход будет иметь это соответствующее значение и позицию на входе, как показано в actualoutput.xml.
Тем не менее, хотелось бы сгенерировать выходной xml, как ожидаетсяOutput.xml, имеющий атрибуты Value. Может ли кто-нибудь указать, как изменить мой xsl-файл для получения ожидаемого выхода.xml?
ниже находятся файлы
XslFile.xsl
<xsl:stylesheet version="1.0" exclude-result-prefixes="msxsl" xmlns:xsl="http://www.w3.org/1999/XSL/Transform"" xmlns:msxsl="urn:schemas-microsoft-com:xslt">
<xsl:output method="xml" indent="yes"/>
<xsl:template match="/">
<result>
<xsl:apply-templates select="/*/id"/>
</result>
</xsl:template>
<xsl:template match="id">
<xsl:variable name="currencydetails" select="document('document.xml')/doc"/>
<xsl:variable name="id">
<xsl:value-of select="."/>
</xsl:variable>
<mapValue>
<xsl:variable name="fromDocument" select="$currencydetails/id[@value=$id]"/>
<xsl:value-of select="$fromDocument"/>
</mapValue>
<position>
<xsl:value-of select="position()"/>
</position>
</xsl:template>
</xsl:stylesheet>
document.xml
<doc>
<id value="123">abc</id>
<id value="456">abc</id>
<id value="011">def</id>
<id value="rty">ghj</id>
<id value="iop">qwd</id>
<id value="321">ply</id>
</doc>
Input.xml
<Root>
<id>123</id>
<id>321</id>
<id>897</id>
<id>011</id>
<id>456</id>
</Root>
actualoutput.xml - я могу добраться только до сюда
<result>
<mapValue>abc</mapValue>
<position>1</position>
<mapValue>ply</mapValue>
<position>2</position>
<mapValue/>
<position>3</position>
<mapValue>def</mapValue>
<position>4</position>
<mapValue>abc</mapValue>
<position>5</position>
</result>
Ожидаемый выход.xml - что я хочу
<result>
<map Value="abc">
<position>1</position>
<position>5</position>
</map>
<map Value="nomatch">
<position>3</position>
</map>
<map Value="def">
<position>4</position>
</map>
<map Value="ply">
<position>2</position>
</map>
</result>
Спасибо. Я буду читать больше о функции xsl: number и position ()
Однако для вышеуказанного решения я получаю ответ ниже. Не могли бы вы направить / помочь мне. Вывод должен быть отображен на основе значения «fromdocument».
<result>
<map value="abc"/>
<position>1</position>
<map value="ply"/>
<position>6</position>
<map value=""/>
<position/>
<map value="def"/>
<position>3</position>
<map value="abc"/>
<position>2</position>
</result>