我有这个包含以下内容的XML文件:
<wd:Report_Data xmlns:wd="urn:com.workday.report/INT005_">
<wd:Report_Entry>
<wd:PERNR>00000001</wd:PERNR>
<wd:HR_PARTNER>
<wd:HR_BUSINESS_PART>A</wd:HR_BUSINESS_PART>
</wd:HR_PARTNER>
<wd:HR_PARTNER>
<wd:HR_BUSINESS_PART>B</wd:HR_BUSINESS_PART>
</wd:HR_PARTNER>
</wd:Report_Entry>
<wd:Report_Entry>
<wd:PERNR>00000002</wd:PERNR>
<wd:HR_PARTNER>
<wd:HR_BUSINESS_PART>C</wd:HR_BUSINESS_PART>
</wd:HR_PARTNER>
<wd:HR_PARTNER>
<wd:HR_BUSINESS_PART>D</wd:HR_BUSINESS_PART>
</wd:HR_PARTNER>
<wd:HR_PARTNER>
<wd:HR_BUSINESS_PART>E</wd:HR_BUSINESS_PART>
</wd:HR_PARTNER>
</wd:Report_Entry>
</wd:Report_Data>
我正在使用XSLT代码:
<?xml version="1.0" encoding="UTF-8"?>
<xsl:stylesheet exclude-result-prefixes="wd"
xmlns:xsl="http://www.w3.org/1999/XSL/Transform" version="2.0"
xmlns:wd="urn:com.workday.report/INT005_">
<xsl:output indent="yes" method="xml" />
<xsl:strip-space elements="*" />
<xsl:template match="wd:Report_Data">
<wd:Report_Data>
<xsl:for-each select="wd:Report_Entry">
<wd:Report_Entry>
<wd:PERNR><xsl:value-of select="wd:PERNR"/></wd:PERNR>
<wd:HR_BUSINESS_PART>
<xsl:apply-templates select="wd:HR_PARTNER/*"/>
</wd:HR_BUSINESS_PART>
</wd:Report_Entry>
</xsl:for-each>
</wd:Report_Data>
</xsl:template>
<xsl:template match="wd:HR_PARTNER">
<xsl:apply-templates select="ancestor::wd:Report_Entry">
<xsl:with-param name="HRBP" select="current()" />
</xsl:apply-templates>
</xsl:template>
<xsl:template match="/wd:HR_PARTNER">
<xsl:param name="HRBP"/>
<wd:HR_BUSINESS_PART>
<xsl:value-of select="$HRBP"/>
</wd:HR_BUSINESS_PART>
</xsl:template>
</xsl:stylesheet>
这似乎工作正常,但我需要在wd:HR_BUSINESS_PART的值之间加一个空格。我编码不是很好,所以我不确定在这里使用的其他方法。有人知道我该怎么做才能让我的最终输出看起来像这样吗?
<?xml version="1.0" encoding="UTF-8"?>
<wd:Report_Data xmlns:wd="urn:com.workday.report/INT005_">
<wd:Report_Entry>
<wd:PERNR>00000001</wd:PERNR>
<wd:HR_BUSINESS_PART>A B</wd:HR_BUSINESS_PART>
</wd:Report_Entry>
<wd:Report_Entry>
<wd:PERNR>00000002</wd:PERNR>
<wd:HR_BUSINESS_PART>C D E</wd:HR_BUSINESS_PART>
</wd:Report_Entry>
</wd:Report_Data>
答案 0 :(得分:2)
而不是
<wd:HR_BUSINESS_PART>
<xsl:apply-templates select="wd:HR_PARTNER/*"/>
</wd:HR_BUSINESS_PART>
只需使用
<wd:HR_BUSINESS_PART>
<xsl:value-of select="wd:HR_PARTNER/wd:HR_BUSINESS_PART" separator=" "/>
</wd:HR_BUSINESS_PART>
空格是分隔符,甚至是具有value-of
属性(https://www.w3.org/TR/xslt20/#value-of)的select
的默认值,因此您只需使用
<wd:HR_BUSINESS_PART>
<xsl:value-of select="wd:HR_PARTNER/wd:HR_BUSINESS_PART"/>
</wd:HR_BUSINESS_PART>