排除xml节点

时间:2011-10-27 14:56:24

标签: javascript xml xslt

我陷入了一些可能让你认为很简单的事情!

在xml文件中,我有这些节点

<Types>
  <Pas type="1" single="Man" plural="Men" />
  <Pas type="2" single="Woman" plural="Women" description="this is a test" />
  <Pas type="3" single="Child" plural="Children" description="this is another test" />
</Types>

然后在xslt文件中有一个javascript,我正在填充一个变量

Details = {<xsl:for-each select="/Types/Pas">"<xsl:value-of select="@type"/>": {single:"<xsl:value-of select="@single"/>",plural:"<xsl:value-of select="@plural"/>"}

到目前为止一切顺利。在xslt的某个时刻我有这个

(<xsl:value-of select="$Details/@desc" />)* 

因为我想在()中用*结尾显示描述。

我得到了这个:

Men()*
Women(this is a test)*
Children(this is another test)*

问题是我不想男人的()*。

有没有办法排除它?

问候!

2 个答案:

答案 0 :(得分:2)

你可以像这样添加一个xsl:if语句:

<xsl:if test="@description">
     (<xsl:value-of select="$Details/@desc" />)* 
</xsl:if>

答案 1 :(得分:1)

您只需要放置这段特殊代码:

(<xsl:value-of select="$Details/@description" />)*

进入条件陈述,例如

<xsl:if test='current()/@description and string-length(current()/@description) > 0'>
  (<xsl:value-of select="$Details/@description" />)*
</xsl:if>

请注意,这也会处理空属性。