简体   繁体   English

如何使用 XSLT 1.0 将属性的一部分复制到新的 XML

[英]How to copy just a part of an attribute to the new XML using XSLT 1.0

I need to copy just a part of an attribute to create a new XML, I have this as input:我只需要复制一个属性的一部分来创建一个新的 XML,我有这个作为输入:

<START> 
    <LIST>
        <PRODUCT name="ELEMENT1.HKL" code="12" >
            <SPEC>
                <available>yes</available>
            </SPEC>
        </PRODUCT>
        
        <PRODUCT name="ELEMENT2.HKL" code="14" >
            <SPEC>
                <available>yes</available>
            </SPEC>
        </PRODUCT>
        
    </LIST>
</START>

In the match element I need to copy the attribute name but just what is written before the dot,so I would have something like this:在匹配元素中,我需要复制属性名称,但只是在点之前写的,所以我会有这样的东西:

<?xml version="1.0" encoding="UTF-8"?><START>
   <LIST>
       <PRODUCT delivery="done" name="ELEMENT1">
           <SPEC>
               <available>yes</available>
           </SPEC>
       </PRODUCT>
       <PRODUCT code="14" name="ELEMENT2.HKL">
           <SPEC>
               <available>yes</available>
           </SPEC>
       </PRODUCT>
   </LIST>
</START>

And this is the XSLT that Im trying to use:这是我尝试使用的 XSLT:

<xsl:stylesheet version="1.0" xmlns:xsl="http://www.w3.org/1999/XSL/Transform" xmlns:str="http://exslt.org/strings" 
extension-element-prefixes="str">
<xsl:output method="xml" version="1.0" encoding="UTF-8" indent="yes"/>
<xsl:strip-space elements="*"/>

   <xsl:template match="@*|node()">
     <xsl:copy>
       <xsl:apply-templates select="@*|node()"/>
     </xsl:copy>
   </xsl:template>
   
   <xsl:template match="PRODUCT/@code[.='12']">
       <xsl:attribute name="delivery">done</xsl:attribute> 
       <xsl:attribute name="name">
           <xsl:value-of select="substring-before(., '.')"/>   
       </xsl:attribute> 
   </xsl:template>
</xsl:stylesheet>

But its not working, any idea on how I can make it works?.但它不起作用,关于我如何使它起作用的任何想法?

Use substring-before(., '.') .使用substring-before(., '.')

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM