首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >XSLT -创建新的元素和值

XSLT -创建新的元素和值
EN

Stack Overflow用户
提问于 2019-09-13 08:17:21
回答 1查看 34关注 0票数 0

这是原始的输入文件。

代码语言:javascript
复制
<?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代码。所以最终结果会是这样

代码语言:javascript
复制
<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‘。

代码语言:javascript
复制
    <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>

但这就是我最后的下场。在每个循环中,所有的值都连接在一起。

代码语言:javascript
复制
<?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>

对不起,我之前试图简化我的问题,但没有意识到它正在造成更多的问题。真的很感谢你的建议!

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2019-09-13 09:12:51

这样试试?

XSLT1.0

代码语言:javascript
复制
<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内部使用的相对路径。

Demohttps://xsltfiddle.liberty-development.net/pPJ8LUV

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/57919785

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档