Мое требование - преобразование XML A в XML B. Тег, в котором я читал из XML A, должен быть настраиваемым, это своего рода идентификация списков. Если в XML-документе присутствует какой-либо новый тег, его следует использовать путем добавления записей в файл конфигурации для Java и программно, что, в свою очередь, должно быть отражено в XSLT и преобразовано в XML B.
Я использую Java. Можно ли пропустить параметры? поскольку мое требование требует, чтобы параметры передавались в цикле или в списке.
Я новичок в XSLT, и вся информация по этому поводу будет очень оценена.
Источник XML. Здесь может быть больше, например, ежегодно, еженедельно и т.д.
<?xml version="1.0" encoding="UTF-8" standalone="yes"?>
<Report>
<Daily>
<input>1234</input>
</Daily>
<Monthly>
<input>8678</input>
</Monthly>
</Report>
Целевой XML
<?xml version="1.0" encoding="UTF-8" standalone="yes"?>
<Report>
<Value>
<Attribute>
<name>Daily</name>
<values>1234</values>
</Attribute>
<Attribute>
<name>Monthly</name>
<values>8678</values>
</Attribute>
</Value>
</Report>
Вы можете использовать функцию name()
или local-name()
для выбранного в данный момент узла.
Узнайте, как выбрать имя текущего элемента в XSLT
Здесь набросок кода:
<xsl:stylesheet version="1.0" xmlns:xsl="http://www.w3.org/1999/XSL/Transform">
<xsl:template match="/Report/">
<Value>
<xsl:for-each select="*">
<Attribute>
<name>
<xsl:value-of select="name()"/>
</name>
<values>
<xsl:value-of select="./input"/>
</values>
</Attribute>
</xsl:for-each>
</Value>
</xsl:template>
</xsl:stylesheet>
<Daily>
в <name>Daily</name>
. Ему нужно определить текущее имя узла и использовать его в <xsl:element>
.