創建變量標籤是否有可能從XML標記值
<Cars>
<Car>Honda</Car>
<Car>Ferrari</Car>
</Cars>
與XLST改變給定的XML結構
<Cars>
<Honda></Honda>
<Ferrari></Ferrari>
</Cars>
我知道XSLT一點,但我不知道如何創建變量標籤。
謝謝大家。 我欣賞所有三個答案,並投票給他們。
創建變量標籤是否有可能從XML標記值
<Cars>
<Car>Honda</Car>
<Car>Ferrari</Car>
</Cars>
與XLST改變給定的XML結構
<Cars>
<Honda></Honda>
<Ferrari></Ferrari>
</Cars>
我知道XSLT一點,但我不知道如何創建變量標籤。
謝謝大家。 我欣賞所有三個答案,並投票給他們。
試試這個:
<?xml version="1.0"?>
<xsl:stylesheet version="1.0"
xmlns:xsl="http://www.w3.org/1999/XSL/Transform">
<xsl:template match="/">
<xsl:apply-templates />
</xsl:template>
<xsl:template match="Cars">
<Cars>
<xsl:for-each select="Car">
<xsl:element name="{.}"/>
</xsl:for-each>
</Cars>
</xsl:template>
</xsl:stylesheet>
您正在尋找xsl:element
,使用大括號像這樣在運行時計算的名稱:
<xsl:template match="/">
<xsl:for-each select="Cars/Car">
<xsl:element name="{.}"/>
</xsl:for-each>
</xsl:template>
也許只是「汽車/汽車」? – abatishchev
你可以使用<xsl:element>創建由給定名稱的元素。例如。在你的情況下,它會是這樣的:
<xsl:template match="Car">
<xsl:element name="{text()}"></xsl:element>
</xsl:template>
UPD: 這是一個片段。通常這種轉換隻是爲了修改樹中的幾個節點而已。您定義複製模板:
<xsl:template match="@* | node()">
<xsl:copy>
<xsl:apply-templates select="@* | node()"/>
</xsl:copy>
</xsl:template>
這只是複製整個XML樹是再添加一些自定義模板爲特定的元素,屬性等,例如至於上面的「車」。
也許「//汽車」或「汽車/汽車」? – abatishchev
@abatishchev:查看UPD – kan
你將需要至少(在回答時之前我以爲這是一個小例子作爲一個更大的XSLT的一部分)的根元素相匹配的模板。我已經更新了我的答案,以包含''。 –
actionshrimp
感謝您的快速回答,我只開始學習XLST,如果不是這樣,我會接受您的答案。 – bbaja42