这是原始的输入文件。
<?xml version="1.0" encoding="UTF-8" ?>
<SSC>
<Payload>
<Item>
<Characteristics>
<CharacteristicCode>NRF COLOR</CharacteristicCode>
<AlphaValues>
<CharacteristicCode>NRF COLOR</CharacteristicCode>
<DiscreteValueAlphanumeric>000</DiscreteValueAlphanumeric>
</AlphaValues>
</Characteristics>
<Characteristics>
<CharacteristicCode>SIZE</CharacteristicCode>
<AlphaValues>
<CharacteristicCode>SIZE</CharacteristicCode>
<DiscreteValueAlphanumeric>10</DiscreteValueAlphanumeric>
</AlphaValues>
<AlphaValues>
<CharacteristicCode>SIZE</CharacteristicCode>
<DiscreteValueAlphanumeric>11</DiscreteValueAlphanumeric>
</AlphaValues>
<AlphaValues>
<CharacteristicCode>SIZE</CharacteristicCode>
<DiscreteValueAlphanumeric>12</DiscreteValueAlphanumeric>
</AlphaValues>
</Characteristics>
<Characteristics>
<CharacteristicCode>UPC</CharacteristicCode>
<AlphaValues>
<CharacteristicCode>UPC</CharacteristicCode>
<DiscreteValueAlphanumeric></DiscreteValueAlphanumeric>
</AlphaValues>
</Characteristics>
</Item>
</Payload>
</SSC>基于特征代码“大小”,我需要附加一个名为"UPC“的特征元素。对于每个大小,将创建一个UPC代码。所以最终结果会是这样
<Characteristics>
<CharacteristicCode>UPC</CharacteristicCode>
<AlphaValues>
<CharacteristicCode>UPC</CharacteristicCode>
<DiscreteValueAlphanumeric>UPC-10</DiscreteValueAlphanumeric>
</AlphaValues>
<AlphaValues>
<CharacteristicCode>UPC</CharacteristicCode>
<DiscreteValueAlphanumeric>UPC-11</DiscreteValueAlphanumeric>
</AlphaValues>
<AlphaValues>
<CharacteristicCode>UPC</CharacteristicCode>
<DiscreteValueAlphanumeric>UPC-12</DiscreteValueAlphanumeric>
</AlphaValues>
</Characteristics>到目前为止,这是我的密码。由于循环的问题,我无法在字段中连接'UPC‘。
<xsl:template match="/SSC/Payload/Item/Characteristics/AlphaValues[CharacteristicCode='UPC']">
<xsl:for-each select = "/SSC/Payload/Item/Characteristics/AlphaValues[CharacteristicCode='SIZE']/DiscreteValueAlphanumeric">
<AlphaValues>
<CharacteristicCode>UPC</CharacteristicCode>
<DiscreteValueAlphanumeric>
<xsl:value-of select = "/SSC/Payload/Item/Characteristics/AlphaValues[CharacteristicCode='SIZE']/DiscreteValueAlphanumeric"/>
</DiscreteValueAlphanumeric>
</AlphaValues>
</xsl:for-each>
</xsl:template>但这就是我最后的下场。在每个循环中,所有的值都连接在一起。
<?xml version="1.0" encoding="UTF-8"?>
<SSC>
<Payload>
<Item>
<Characteristics>
<CharacteristicCode>NRF COLOR</CharacteristicCode>
<AlphaValues>
<CharacteristicCode>NRF COLOR</CharacteristicCode>
<DiscreteValueAlphanumeric>000</DiscreteValueAlphanumeric>
</AlphaValues>
</Characteristics>
<Characteristics>
<CharacteristicCode>SIZE</CharacteristicCode>
<AlphaValues>
<CharacteristicCode>SIZE</CharacteristicCode>
<DiscreteValueAlphanumeric>10</DiscreteValueAlphanumeric>
</AlphaValues>
<AlphaValues>
<CharacteristicCode>SIZE</CharacteristicCode>
<DiscreteValueAlphanumeric>11</DiscreteValueAlphanumeric>
</AlphaValues>
<AlphaValues>
<CharacteristicCode>SIZE</CharacteristicCode>
<DiscreteValueAlphanumeric>12</DiscreteValueAlphanumeric>
</AlphaValues>
</Characteristics>
<Characteristics>
<CharacteristicCode>UPC</CharacteristicCode>
<AlphaValues>
<CharacteristicCode>UPC</CharacteristicCode>
<DiscreteValueAlphanumeric>10 11 12</DiscreteValueAlphanumeric>
</AlphaValues>
<AlphaValues>
<CharacteristicCode>UPC</CharacteristicCode>
<DiscreteValueAlphanumeric>10 11 12</DiscreteValueAlphanumeric>
</AlphaValues>
<AlphaValues>
<CharacteristicCode>UPC</CharacteristicCode>
<DiscreteValueAlphanumeric>10 11 12</DiscreteValueAlphanumeric>
</AlphaValues>
</Characteristics>
</Item>
</Payload>
</SSC>对不起,我之前试图简化我的问题,但没有意识到它正在造成更多的问题。真的很感谢你的建议!
发布于 2019-09-13 09:12:51
这样试试?
XSLT1.0
<xsl:stylesheet version="1.0"
xmlns:xsl="http://www.w3.org/1999/XSL/Transform">
<xsl:output method="xml" version="1.0" encoding="UTF-8" indent="yes"/>
<xsl:template match="/SSC">
<Characteristics>
<CharacteristicCode>UPC</CharacteristicCode>
<xsl:for-each select="Payload/Item/Characteristics[CharacteristicCode='SIZE']/AlphaValues">
<AlphaValues>
<CharacteristicCode>UPC</CharacteristicCode>
<DiscreteValueAlphanumeric>
<xsl:text>UPC-</xsl:text>
<xsl:value-of select="DiscreteValueAlphanumeric"/>
</DiscreteValueAlphanumeric>
</AlphaValues>
</xsl:for-each>
</Characteristics>
</xsl:template>
</xsl:stylesheet>注意xsl:for-each内部使用的相对路径。
https://stackoverflow.com/questions/57919785
复制相似问题