我是XSLT和XML的新手。
我目前正在从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>
有人可以指导我如何组合该模板以删除前导零。
答案 0 :(得分:2)
只需将此模板添加到现有样式表(作为第三个模板以及您已有的两个模板):
<xsl:template match="num">
<xsl:copy>
<xsl:value-of select="number(.)"/>
</xsl:copy>
</xsl:template>