[英]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.