【问题标题】:Why do i get no formatted result (csv) with my xsl?为什么我的 xsl 没有格式化结果 (csv)?
【发布时间】:2016-10-31 22:56:29
【问题描述】:

我怎样才能给我的输出正确的格式? XSLT 中缺少什么? 看看我下面的例子。提前感谢您的帮助。

XML:

<?xml version="1.0" encoding="UTF-8"?>
<FED xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance">
   <POI>
      <Id>56241</Id>
      <POI_Contact>
         <CategoryID>museum</CategoryID>
         <Name>Centre Pompidou</Name>
      </POI_Contact>
  </POI>
   <POI>
      <Id>141670</Id>
      <POI_Contact>
         <CategoryID>museum</CategoryID>
         <Name>Espace Culturel Saint-Exupéry</Name>
      </POI_Contact>
   </POI>
   <POI>
      <Id>56242</Id>
      <POI_Contact>
         <CategoryID>museum</CategoryID>
         <Name>Musée du Louvre</Name>
      </POI_Contact>
  </POI>
</FED>

XSL:

<?xml version="1.0" encoding="UTF-8"?>
<xsl:stylesheet xmlns:xsl="http://www.w3.org/1999/XSL/Transform" version="1.0">
<xsl:output method="text" indent="yes"/>
<xsl:strip-space elements="*"/>
<xsl:template match="/">

ID;Category;Name

  <xsl:for-each select="FED/POI">     
    <xsl:value-of select="Id"/>;
    <xsl:value-of select="POI_Contact/CategoryID"/>
  </xsl:for-each>

</xsl:template>
</xsl:stylesheet>

输出:

   ID;Category;Name
   56241;
    museum
141670;
    museum
56242;
    museum

输出应如下所示:

ID;类别;名称
56241;博物馆
141670;博物馆
56242;博物馆

【问题讨论】:

    标签: xml csv xslt


    【解决方案1】:

    像你这样指定文字文本的问题是整个文本节点,包括周围的空白,都被传递到输出。

    试试吧:

    <xsl:template match="/">
        <xsl:text>ID;Category;Name&#10;</xsl:text>
        <xsl:for-each select="FED/POI">     
            <xsl:value-of select="Id"/>
            <xsl:text>;</xsl:text>
            <xsl:value-of select="POI_Contact/CategoryID"/>
            <xsl:text>&#10;</xsl:text>
        </xsl:for-each>
    </xsl:template>
    

    附:你的标题是ID;Category;Name,但你没有输出Name

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2015-05-04
      • 2021-02-02
      • 1970-01-01
      • 2019-12-10
      • 1970-01-01
      • 1970-01-01
      • 2015-11-01
      相关资源
      最近更新 更多