Я знаю, что вопросы, подобные этому, были заданы, но я не могу понять, что не так с моим тестом.Тест XSL для отсутствующего атрибута
Вот 3 варианта того, как может выглядеть мой XML; Я пытаюсь определить наличие значения для <apsite:address>
, пустую строку или отсутствующий элемент.
<apsite:apsite xmlns="http://www.w3.org/1999/xhtml" >
<apsite:name>John</apsite:name>
<apsite:address>Some Address</apsite:name>
</apsite:apsite>
<apsite:apsite xmlns="http://www.w3.org/1999/xhtml" >
<apsite:name>John</apsite:name>
<apsite:address></apsite:name>
</apsite:apsite>
<apsite:apsite xmlns="http://www.w3.org/1999/xhtml" >
<apsite:name>John</apsite:name>
</apsite:apsite>
Мне нужно найти экземпляры, где значение - пустая строка или значение null. Это мои условия.
<xsl:if
test="../apsite:address = ''">
<dc:source>
<xsl:value-of select="." />
</dc:source>
</xsl:if>
<xsl:if
test="not(apsite:apsite/apsite:address)">
<dc:source>
<xsl:value-of select="." />
</dc:source>
</xsl:if>
<xsl:if
test="../apsite:adress != ''">
<dc:source>
<xsl:value-of select="../apsite:oldAddress" />
</dc:source>
</xsl:if>
Мой тест для пустых строк работ, но не для недостающего элемента т.е. тест = «нет (Apsīte: Apsīte/Apsīte: адрес)»> не работает.
Не могли бы вы сообщить, что мне не хватает?
Спасибо.
Я думаю, что вы имеете в виду отсутствующий элемент 'element', а не атрибут' attribute'. В ваших исходных исходных документах нет атрибутов. ' ' является элементом XML ** **. –
Попробуйте 'test =" not (../ apsite: address) "вместо" test = "not (apsite: apsite/apsite: address)". Вам также может понравиться использовать шаблоны, а не уродливую цепочку xsl: если инструкции. –
Спасибо @ SeanB.Durkin Я изменил ссылку от атрибута к элементу. Пробовал (../ apsite: address) с тем же отрицательным результатом. – Macky