转换返回额外数据

时间:2014-09-11 21:58:57

标签: xml xslt-2.0

我正在使用的是xml。问题是,当我应用变换时,结果包含额外的字符,我不知道为什么

这是我的xml

<?xml version="1.0" encoding="UTF-8"?>
<?xml-stylesheet type="text/xsl"
 href="file:///C:/Documents%20and%20Settings/Administrator/My%20Documents/Test/XsltModelo.xslt"?>
<nyfile>
   <HourNow>20140820230732</HourNow>
   <Customer>
        <ReportType>102,0x00000066</ReportType>
        <BusinessDate>20140820</BusinessDate>
      <Mix>
        <ProductName>noname</ProductName>
        <FamilyGroup>6</FamilyGroup>
    </Mix>
   </Customer>
</nyfile>

它是xslt

<?xml version="1.0" encoding="UTF-8"?>
<xsl:stylesheet version="2.0" xmlns:xsl="http://www.w3.org/1999/XSL/Transform" xmlns:xs="http://www.w3.org/2001/XMLSchema" xmlns:fn="http://www.w3.org/2005/xpath-functions"
exclude-result-prefixes="xs fn">
    <xsl:output method="xml" version="1.0" encoding="UTF-8" indent="yes"/>

    <xsl:template match="/">
        <Items>
            <xsl:apply-templates/>    
        </Items>
    </xsl:template>

    <xsl:template match="Mix"> 
        <item>
            <BusinessDate><xsl:value-of select="../BusinessDate" /></BusinessDate>   
            <ProductName><xsl:value-of select="ProductName" /></ProductName>
        </item>
    </xsl:template>

</xsl:stylesheet>
申请转化后

xml结果包含额外的字符20140820230732102,0x0000006620140820, 有人可以展示光明吗?

<?xml version="1.0" encoding="UTF-8"?>
<Items>20140820230732102,0x0000006620140820
<item>
    <BusinessDate>20140820</BusinessDate>
    <ProductName>noname</ProductName>
</item>

1 个答案:

答案 0 :(得分:0)

您只为Mix元素定义了一个模板,但是您正在将模板应用于nyfile向下的所有内容。因此,除了Mix之外的所有内容都将由默认模板规则处理,这些规则会对元素进行递归,但只输出文本节点。

如果您只想处理Mix部分,只需选择:

<xsl:template match="/">
    <Items>
        <xsl:apply-templates select="nyfile/Customer/Mix"/>    
    </Items>
</xsl:template>