如何在节点xslt

时间:2015-06-19 06:54:12

标签: xslt

xml的原始来源

<SubdivisionType>
         <ID>null</ID>
         <Name>null</Name>
         <Parent i:nil="true"/>
</SubdivisionType>

String&#39; null&#39;由E4X生成。我必须检查SubdivisionType / ID是否包含另一个值然后&#39; null&#39;然后跳过所有SubdivisionType标记。

这是我的工作方式

<xsl:if test="SubdivisionType/ID[text()!=null]" >
   ...
</xsl:if>

我无法理解xlst(saxon)如何处理字符串&#39; null&#39;。

2 个答案:

答案 0 :(得分:1)

我不认识saxon,但据我所知,这不是“空字符串”......它是一个值为“null”的字符串。

我会尝试改变......

text()!=null

为...

text()!='null'

所以它读取......

<xsl:if test="SubdivisionType/ID[text()!='null']">

答案 1 :(得分:0)

@Simar,

如果我们将下面的内容视为xml

<?xml version="1.0" encoding="utf-8"?>
<xml>
<SubdivisionType>
<ID>null</ID>
<Name>null</Name>
<Parent nil="true"/>
</SubdivisionType>
<SubdivisionType>
<ID>asd</ID>
 <Name>null</Name>
<Parent nil="true"/>
</SubdivisionType>
</xml>

XSL:

<?xml version="1.0" encoding="utf-8"?>
<xsl:stylesheet version="1.0" `xmlns:xsl="http://www.w3.org/1999/XSL/Transform">
<xsl:template match="@*|node()">
<xsl:copy>
<xsl:apply-templates select="@*|node()"/>
</xsl:copy> 
</xsl:template>
<xsl:template match = "SubdivisionType[ID = 'null']" />
</xsl:stylesheet>

输出:

<?xml version="1.0" encoding="UTF-8"?>
<xml>
<SubdivisionType>
<ID>asd</ID>
<Name>null</Name>
<Parent nil="true"/>
</SubdivisionType>
</xml>