2014-10-30 20 views
0

我是XSLT和XML的新手。XSLT結合了兩個模板過濾器信息

我目前正在過濾來自XML文檔的一些信息,並且我想在同一個文檔上再應用一個模板。

我不知道如何結合這兩個模板。

如果有人能指導我。

這是我的XML文檔:

<?xml version="1.0" encoding="UTF-8"?> 
<People> 
<Person> 
<num>0000022222</num> 
<first-name>Mike</first-name> 
<last-name>Jhonny</last-name> 
<licenses> 
    <license> 
     <number>1762539</number> 
    </license> 
    <license> 
     <number>1762538</number> 
    </license> 
</licenses> 
<not-required> 
    <one>12345</one> 
    <two>54321</two> 
</not-required> 
</Person> 
<Person> 
<num>0000011111</num> 
<first-name>John</first-name> 
<last-name>Jhonny</last-name> 
<licenses> 
    <license> 
     <number>1762539</number> 
    </license> 
    <license> 
     <number>1762538</number> 
    </license> 
</licenses> 
<not-required> 
    <one>12345</one> 
    <two>54321</two> 
</not-required> 
</Person> 
</People> 

我要過濾的<not-required></not-required>標籤,我能夠做到這一點。

我也想過濾<num>標籤的前導零。

我知道我可以通過應用此模板來做到這一點。

<xsl:template match="num"> 
    <xsl:value-of select="number(.)"/> 
</xsl:template> 

,我使用目前的XSLT如下:

<?xml version="1.0"?> 
<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:strip-space elements="*"/> 

<xsl:template match="node()|@*"> 
    <xsl:copy> 
    <xsl:apply-templates select="node()|@*"/> 
</xsl:copy> 
</xsl:template> 

<xsl:template match="not-required"/> 
</xsl:stylesheet> 

這是我如何得到輸出:

<?xml version="1.0" encoding="UTF-8"?> 
<People> 
<Person> 
    <number>0000022222</number> 
    <first-name>Mike</first-name> 
    <last-name>Jhonny</last-name> 
    <licenses> 
     <license> 
      <number>1762539</number> 
     </license> 
     <license> 
      <number>1762538</number> 
     </license> 
    </licenses> 
</Person> 
<Person> 
    <number>0000011111</number> 
    <first-name>John</first-name> 
    <last-name>Jhonny</last-name> 
    <licenses> 
     <license> 
      <number>1762539</number> 
     </license> 
     <license> 
      <number>1762538</number> 
     </license> 
    </licenses> 
</Person> 
</People> 

這是我期待

<?xml version="1.0" encoding="UTF-8"?> 
<People> 
<Person> 
    <number>22222</number> 
    <first-name>Mike</first-name> 
    <last-name>Jhonny</last-name> 
    <licenses> 
     <license> 
      <number>1762539</number> 
     </license> 
     <license> 
      <number>1762538</number> 
     </license> 
    </licenses> 
</Person> 
<Person> 
    <number>11111</number> 
    <first-name>John</first-name> 
    <last-name>Jhonny</last-name> 
    <licenses> 
     <license> 
      <number>1762539</number> 
     </license> 
     <license> 
      <number>1762538</number> 
     </license> 
    </licenses> 
</Person> 
</People> 

有人可以指導我如何co mbine模板來取得前導零。

回答

2

剛(除了你已經有兩個作爲第三模板)這個模板添加到您現有的樣式表:

<xsl:template match="num"> 
    <xsl:copy> 
     <xsl:value-of select="number(.)"/> 
    </xsl:copy> 
</xsl:template> 
+0

出於某種原因,當我加入這個以前它是不工作。這很奇怪,所以我問了這個問題。 – Aniks 2014-10-30 16:46:22

+1

您的版本沒有xsl:copy。 – 2014-10-30 16:49:47

+0

很好,非常感謝你幫助我。 – Aniks 2014-10-30 18:25:52