2015-06-19 7 views
1

Оригинальный источник XMLКак проверить нулевую строку в узле XSLT

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

Строка «нулевой» порождается E4X. Я должен проверить, содержит ли SubdivisionType/ID другое значение, а затем «null», а затем пропустить все теги SubdivisionType.

Вот как я сделать

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

Я не могу понять, как XLST (саксонского) обрабатывает строку 'нуль'.

+0

Saxon или любые другие угощения XSLT процессор это, как и любой другой строки. –

ответ

1

Я не знаю саксон конкретно, но насколько мне известно, это не «пустая строка» ... это строка со значением «null».

Я бы попытаться изменить ...

text()!=null 

к ...

text()!='null' 

так, что он читает ...

<xsl:if test="SubdivisionType/ID[text()!='null']"> 
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>