代码之家  ›  专栏  ›  技术社区  ›  Morinar

如果标签存在于XSL中,那么只输出标签的最佳方法是什么?

  •  2
  • Morinar  · 技术社区  · 16 年前

    <xsl:for-each select="State">
        <StateAbbreviation>
            <xsl:value-of select="."/>
        </StateAbbreviation>
    </xsl:for-each>
    

    基本上,“in”XML有一个State标记,我需要将其输出为可识别的State缩写标记。但是,如果“in”XML包含State标记,我只想输出stateAbstration标记。上面的代码块很好地完成了这一点,但不是很直观(至少对我来说不是),因为每次我看到一个 for-each 我假设有不止一个,而在这些情况下有0或1。

    我的问题是:这是一个标准的ish结构吗?如果没有,有没有更喜欢的方法?很明显,我可以检查字符串长度(在其他样式表中也可以这样做),但是我希望在任何地方都使用相同的“最佳”方式(当然,假设存在“最佳”方式)。建议?建议?

    2 回复  |  直到 11 年前
        1
  •  4
  •   Ben    16 年前

    可以将for each替换为:

    <xsl:if test="State">
    
        2
  •  1
  •   Dimitre Novatchev    16 年前

    在XSLT中,建议使用 xsl:apply-templates xsl:for-each

    在这种情况下,一个简单的

    <xsl:apply-templates select="State"/>
    

    以最优雅的方式解决问题。 State 孩子。