簡體   English   中英

如何使用 XSLT 1.0 將屬性的一部分復制到新的 XML

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

我只需要復制一個屬性的一部分來創建一個新的 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>

在匹配元素中,我需要復制屬性名稱,但只是在點之前寫的,所以我會有這樣的東西:

<?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>

這是我嘗試使用的 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>

但它不起作用,關於我如何使它起作用的任何想法?

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

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM