Ниже представлен входной XML-адрес, в котором есть элемент аргументации, который повторяется. Если код в базе reasonCase имеет значение, начинающееся с кандидата, затем создайте заявителя.создавать повторяющиеся элементы на основе значения поля в xslt
<input>
<case>
<reasonCase>
<code>Applicant#1234</code>
<key>asd345</key>
</reasonCase>
<reasonCase>
<code>Applicant#1234</code>
<key>asd34567</key>
</reasonCase>
<reasonCase>
<code>Applicant#3456</code>
<key>asd1111</key>
</reasonCase>
<reasonCase>
<code>Applicant#7889</code>
<key>asd9999</key>
</reasonCase>
</case>
</input>
Ожидаемый выход код под reasonCase с таким же значением должно быть таким же заявителем элемента в выходных и соответствующие элементы также должны быть в том же заявителя элемента
<output>
<case>
<applicant>
<objectid>1234</objectid>
<reason>
<key>asd345</key>
</reason>
<reason>
<key>asd34567</key>
</reason>
</applicant>
<applicant>
<objectid>3456</objectid>
<reason>
<key>asd1111</key>
</reason>
</applicant>
<applicant>
<objectid>7889</objectid>
<reason>
<key>asd9999</key>
</reason>
</applicant>
</case>
</output>
На основе reasonCase/код = start-with (Заявитель) должны создавать повторяющиеся элементы-заявителя и соответствующие элементы.
Пожалуйста, найдите ниже XSLT, что я пытался
<xsl:stylesheet version="1.0" xmlns:xsl="http://www.w3.org/1999/XSL/Transform">
<xsl:output method="xml"/>
<xsl:template match="/">
<output>
<xsl:for-each select="/input/case/reasonCase">
<xsl:variable name="code">
<xsl:value-of select="./code"/>
</xsl:variable>
<xsl:choose>
<xsl:when test="starts-with(./code,'Applicant')">
<Applicants>
<objectId>
<xsl:value-of select="substring-after(/*/*/*[code=$code]/code,'Applicant#')"/>
</objectId>
<reason>
<key><xsl:value-of select="/*/*/*[code=$code]/key"/></key>
</reason>
</Applicants>
</xsl:when>
</xsl:choose>
</xsl:for-each>
</output>
</xsl:template>
</xsl:stylesheet>
Вывод, который я получил, как показано ниже
<output>
<Applicants>
<objectId>1234</objectId>
<reason>
<key>asd345</key>
</reason>
</Applicants>
<Applicants>
<objectId>1234</objectId>
<reason>
<key>asd345</key>
</reason>
</Applicants>
<Applicants>
<objectId>3456</objectId>
<reason>
<key>asd1111</key>
</reason>
</Applicants>
<Applicants>
<objectId>7889</objectId>
<reason>
<key>asd9999</key>
</reason>
</Applicants>
</output>
Пожалуйста, помогите мне, чтобы получить ожидаемый результат.
Где именно вы застряли в этом? –
У меня есть требование, как показано выше. Im неспособно реализовать любую логику для того же самого. Нужна помощь с логикой. – user1731504
Мы не здесь, чтобы написать код для вас. Если у вас есть конкретный вопрос или трудность, покажите свою попытку и спросите, как ее исправить. –