XSLT转换会在文档的开头生成字符

时间:2013-08-24 00:57:37

标签: xml xslt

您好我有一个xml doc

<?xml version="1.0" encoding="utf-8"?>
<ArrayOfApiFeedProduct xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:xsd="http://www.w3.org/2001/XMLSchema">
   <ApiFeedProduct>
      <Code>C119X</Code>
      <OfferCode>MJF*Q*MJ*13</OfferCode>
      <ProductType>Straight</ProductType>
      <Title>Joseph Perrier Cuvée Royale Brut Champagne</Title>
      <SDesc>Joseph Perrier Cuvée Royale Brut Champagne</SDesc>...

和XSLT一样的文档

<xsl:stylesheet version="1.0" xmlns:xsl="http://www.w3.org/1999/XSL/Transform">
  <xsl:template match="/">
    <add>
      <xsl:for-each select="ArrayOfApiFeedProduct/ApiFeedProduct">
        <doc>
          <field name="code">
            <xsl:value-of select="Code"/>
          </field>
          <field name="offercode">
            <xsl:value-of select="OfferCode"/>
          </field>
          <field name="producttype">
            <xsl:value-of select="ProductType"/>
          </field>
          <field name="title">
            <xsl:value-of select="Title"/>
          </field>
          <field name="sdesc">
            <xsl:value-of select="SDesc"/>
          </field>...

但是这会导致像

这样的xml文档
��<?xml version="1.0" encoding="utf-8"?>
<add>
<doc>
<field name="code">C119X</field>
<field name="offercode">MJF*Q*MJ*13</field>
<field name="producttype">Straight</field>
<field name="title">Joseph Perrier Cuvée Royale Brut Champagne</field>
<field name="sdesc">Joseph Perrier Cuvée Royale Brut Champagne</field>...

前两个字符来自哪里?即 ?

1 个答案:

答案 0 :(得分:1)

我怀疑它们构成了编码为UTF-8的Unicode字节顺序标记(BOM)。如果您的文档被一致的XML处理器认为是格式良好的,那么这可能会保证它,因为XML声明之前的任何其他字符都会使文件格式不正确。