无法知道如何删除输出中的空格

时间:2016-08-09 10:27:30

标签: xml xslt xslt-2.0

我有以下XML

<?xml version="1.0" encoding="UTF-8"?>
<orderedlist>
   <listitem>
      <para>
         <citation>
            <citetitle pubwork="other">aaaaaa</citetitle>
            ccccccccccc
         </citation>
         .
      </para>
   </listitem>
   <listitem>
      <para>
         <citation>
            <citetitle pubwork="other">cccc</citetitle>
            mmmm
         </citation>
         .
      </para>
   </listitem>
</orderedlist>

当我在这上面运行我的XSLT时,有一些空格(或者可以是换行符),就像</span>.之间的空格一样。

有没有办法去除这些空间?我使用了<xsl:strip-space elements="*"/>,但我觉得它没什么用处。

以下是我的XSLT。

<?xml version="1.0" encoding="UTF-8" ?>
<xsl:transform xmlns:xsl="http://www.w3.org/1999/XSL/Transform" version="2.0">
    <xsl:output method="html" omit-xml-declaration="yes" encoding="UTF-8" indent="yes" />
<xsl:strip-space elements="*"/>
    <xsl:template match="/">
      <hmtl>
        <head>
          <title>New Version!</title>
        </head>
        <xsl:apply-templates/>
      </hmtl>
    </xsl:template>

    <xsl:template match="@*|node()">
        <xsl:copy>
            <xsl:apply-templates select="@*|node()"/>
        </xsl:copy>
    </xsl:template>

    <xsl:template name="orderedlist" match="orderedlist">
        <ol class="eng-orderedlist orderedlist">
            <xsl:apply-templates/>
        </ol>
    </xsl:template>
    <xsl:template name="orderitempara" match="listitem/para">
            <li class="item">
            <div class="para">
                <xsl:if test="./@num">
                    <xsl:variable name="phrase">
                        <xsl:value-of select="concat('P',./@num)"/>
                    </xsl:variable>
                    <xsl:variable name="newphrase" select="translate($phrase,'.','-')"/>
                    <a>
                        <xsl:attribute name="name"><xsl:value-of select="$newphrase">
              </xsl:value-of></xsl:attribute>
                        <span class="phrase">
                            <xsl:value-of select="./@num"/>
                        </span>
                    </a>
                </xsl:if>
                <xsl:text> </xsl:text>
                <xsl:apply-templates/>
            </div>
        </li>
    </xsl:template>

    <xsl:template name="para" match="para">
    <div class="para">
        <xsl:apply-templates/>
    </div>
    </xsl:template>

    <xsl:template match="citation">
        <span class="font-style-italic">
            <xsl:apply-templates/>
        </span>
    </xsl:template>
    <xsl:template match="citetitle">
        <span class="font-style-italic">
            <xsl:apply-templates/>
        </span>
    </xsl:template>

 <xsl:template match="text()">
                <xsl:value-of select="."/>
        </xsl:template>
</xsl:transform>

这是一个有效的演示。 http://xsltransform.net/6rewNxz

当前o / p:

 <ol class="eng-orderedlist orderedlist">
      <listitem>
         <li class="item">
            <div class="para"> <span class="font-style-italic"><span class="font-style-italic">aaaaaa</span>
                  ccccccccccc
                  </span>
               .

            </div>
         </li>
      </listitem>
      <listitem>
         <li class="item">
            <div class="para"> <span class="font-style-italic"><span class="font-style-italic">cccc</span>
                  mmmm
                  </span>
               .

            </div>
         </li>
      </listitem>
   </ol>

预期o / p:

 <ol class="eng-orderedlist orderedlist">
      <listitem>
         <li class="item">
            <div class="para"> <span class="font-style-italic"><span class="font-style-italic">aaaaaa</span> ccccccccccc</span>.               
            </div>
         </li>
      </listitem>
      <listitem>
         <li class="item">
            <div class="para"> <span class="font-style-italic"><span class="font-style-italic">cccc</span> mmmm</span>.               
            </div>
         </li>
      </listitem>
   </ol>

请告诉我如何获得所需的o / p。

由于

1 个答案:

答案 0 :(得分:0)

如果将文本节点的模板更改为

st.replaceAll("\\s+","")

然后输出就像我想的那样。 http://xsltransform.net/6rewNxz/1