2011-10-27 64 views
1

我陷入了可能对您而言可能认为很简单的事情!排除xml节点

在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

您可以添加一个xsl:如果这样的语句:

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

谢谢队友。它的工作是这样的 \t \t \t \t \t \t \t \t(的)* \t \t \t \t \t \t \t – Unseen

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> 

请注意,这也涉及空属性。

+0

感谢我的朋友:) – Unseen

+1

请注意,此测试表达式相当于短得多'测试=“字符串(@description)”'。 – LarsH

+0

@LarsH +1不知道:) – FailedDev