java—如何使用xml文件在xsl中生成逗号

vatpfxk5  于 2021-06-29  发布在  Java
关注(0)|答案(1)|浏览(329)

我有以下xml文件:

<table>
<tr> 
    <th>Month</th> 
    <th>March, 2020</th>
    <th>XAU Position</th> 
    <th></th> 
    <th>USD Position</th> 
    <th></th> 
</tr> 
<tr>
    <th2>Trade Date</th2> 
    <th2>LBMA AM FIXING</th2> 
    <th2>Positive</th2> 
    <th2>Negative</th2> 
    <th2>Positive</th2> 
    <th2>Negative</th2> 
</tr>
<tr> 
    <td align="center"> Ch_H907</td> 
    <td align="center"> 907</td> 
    <td align="center"> DXM09902</td> 
    <td align="center"> Shipped</td> 
    <td align="center"> USPS</td> 
    <td align="center"> </td> 
</tr>

以及以下style.xsl文件:

<?xml version="1.0"?>
 <xsl:stylesheet version="1.0" xmlns:xsl="http://www.w3.org/1999/XSL/Transform" 
  xmlns:fo="http://www.w3.org/1999/XSL/Format" >
 <xsl:output method="text" omit-xml-declaration="yes" indent="yes"/>
  <xsl:template match="/">
  <html>
  <body>
  <table border="1">
  <tr>
  <xsl:for-each select="//tr">
    <xsl:for-each select="th">
        <xsl:if test="position()> 1">,</xsl:if>
        <xsl:value-of select="."/>
    </xsl:for-each> 
    </xsl:for-each>
  </tr>
 <xsl:text>&#xA;</xsl:text>
 <tr>
   <xsl:for-each select="//tr">
    <xsl:for-each select="th2">
        <xsl:if test="position() > 1">,</xsl:if>
        <xsl:value-of disable-output-escaping="yes" select="."/>
    </xsl:for-each> 
    </xsl:for-each>
  </tr>
   <tr>
   <xsl:for-each select="//tr">
    <xsl:for-each select="td">
        <xsl:if test="position() > 1">,</xsl:if>
        <xsl:value-of select="."/>
       </xsl:for-each>
     <xsl:text>&#xA;</xsl:text>
     </xsl:for-each>
    </tr>
  </table>
  </body>
 </html>
</xsl:template>
  </xsl:stylesheet>

我的问题是:我想用逗号表示第二个:2020年3月,并按原样表示逗号,我的问题是,当我从style.xsl文件创建csv文件时,它会呈现逗号,并在excel工作表中将值拆分为两列。我怎样才能使逗号保持原样呢?

i86rm4rw

i86rm4rw1#

为了避开逗号,整个短语需要用双引号括起来。 "<xsl:value-of select="."/>" 例如:

<?xml version="1.0"?>
 <xsl:stylesheet version="1.0" xmlns:xsl="http://www.w3.org/1999/XSL/Transform" 
  xmlns:fo="http://www.w3.org/1999/XSL/Format" >
 <xsl:output method="text" omit-xml-declaration="yes" indent="yes"/>
  <xsl:template match="/">
  <html>
  <body>
  <table border="1">
  <tr>
  <xsl:for-each select="//tr">
    <xsl:for-each select="th">
        <xsl:if test="position()> 1">,</xsl:if>
        "<xsl:value-of select="."/>"
    </xsl:for-each> 
    </xsl:for-each>
  </tr>
 <xsl:text>&#xA;</xsl:text>
 <tr>
   <xsl:for-each select="//tr">
    <xsl:for-each select="th2">
        <xsl:if test="position() > 1">,</xsl:if>
        "<xsl:value-of disable-output-escaping="yes" select="."/>"
    </xsl:for-each> 
    </xsl:for-each>
  </tr>
   <tr>
   <xsl:for-each select="//tr">
    <xsl:for-each select="td">
        <xsl:if test="position() > 1">,</xsl:if>
        "<xsl:value-of select="."/>"
       </xsl:for-each>
     <xsl:text>&#xA;</xsl:text>
     </xsl:for-each>
    </tr>
  </table>
  </body>
 </html>
</xsl:template>
  </xsl:stylesheet>

相关问题