在xsl报告中的输出周围添加括号

时间:2017-09-18 21:48:44

标签: xml xslt

我正在尝试使用括号括起来的extendedDescription字段内联描述,除非没有extendedDescription。

我在格式化输出和if语句上找到了很多答案。但是,我不是程序员,也无法按照我希望的方式工作。

如果有人能帮助我,我会很感激。谢谢!

以下是代码:

 <?xml version="1.0" encoding="UTF-8"?>
<xsl:stylesheet version="1.1" xmlns:xsl="http://www.w3.org/1999/XSL/Transform" xmlns:fo="http://www.w3.org/1999/XSL/Format" xmlns:msxsl="urn:schemas-microsoft-com:xslt" xmlns:inr="http://mycompany.com/mynamespace">
    <xsl:include href="../format.xsl"/>
    <!-- TDS CR5 Format -->
    <xsl:output method="text" media-type="text/plain" encoding="iso-8859-1"/>
    <xsl:template match="/">
          <xsl:variable name="gridOut" select="inr:SetGridOut(number(InRoads/@outputGridScaleFactor))" />
        <xsl:choose>
            <xsl:when test="$xslShowHelp = 'true'">
                <xsl:call-template name="StyleSheetHelp"/>
            </xsl:when>
            <xsl:otherwise>
                <xsl:for-each select="//GeometryPoint[@name]">
                    <xsl:text/>
                    <xsl:value-of select="@name"/><xsl:text>,</xsl:text>
                    <xsl:value-of select="inr:northingFormat(number(@northing), $xslNorthingPrecision)"/><xsl:text>,</xsl:text>
                    <xsl:value-of select="inr:eastingFormat(number(@easting), $xslEastingPrecision)"/><xsl:text>,</xsl:text>
                    <xsl:value-of select="inr:elevationFormat(number(@elevation), $xslElevationPrecision)"/><xsl:text>,</xsl:text>
                    <xsl:value-of select="@description"/>(<xsl:value-of select="@extendedDescription"/>)<xsl:text>&#xd;</xsl:text>                                  
                </xsl:for-each>
            </xsl:otherwise>
        </xsl:choose>
    </xsl:template>
    <xsl:template name="StyleSheetHelp">
        <xsl:text>Notes&#xd;&#xd;</xsl:text>
        <xsl:text>    You must include at least one cogo point in the Cogo&#xd;</xsl:text>
        <xsl:text>    Points &gt; Include field or one horizontal alignment with&#xd;</xsl:text>
        <xsl:text>    named points in the Horizontal Alignments &gt; Include&#xd;</xsl:text>
        <xsl:text>    field on the Tools &gt; XML Reports &gt; Geometry command to&#xd;</xsl:text>
        <xsl:text>    get results from this report.&#xd;&#xd;</xsl:text>
        <xsl:text>    Most style sheets in the DataCollection directory do&#xd;</xsl:text>
        <xsl:text>    not honor Tools &gt; Format Options with the exception of&#xd;</xsl:text>
        <xsl:text>    precision, where practical.&#xd;&#xd;</xsl:text>
        <xsl:text>Copyright 2006 Bentley Systems, Inc&#xd;</xsl:text>
    </xsl:template>
</xsl:stylesheet>

此处的输出很好,除非没有extendedDescription,因为我在结果文件中得到()。

示例输出(现在):

CS300,848822.7010,617517.7670,1022.26,6615(SES#44) 
CSG002,859658.2240,607167.2050,998.76,6652()

示例输出(想要):

CS300,848822.7010,617517.7670,1022.26,6615(SES#44) 
CSG002,859658.2240,607167.2050,998.76,6652

再次感谢能帮助我的人。

1 个答案:

答案 0 :(得分:2)

尝试更改:

(<xsl:value-of select="@extendedDescription"/>)

为:

<xsl:if test="string(@extendedDescription)">
  <xsl:value-of select="concat('(',@extendedDescription,')')"/>
</xsl:if>