2014-09-02 4 views
-1

Согласно спецификации, элемент может быть · действительным · без содержимого, если он имеет атрибут xsi: nil со значением true. так, например,Является ли xsi: nil истинным является пустым или нулевым?

<root xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"> 
    <e1 xsi:nil="true"></e1> 
</root> 

Если я проверяю, если элемент (e1) содержит текст или нет что-то вроде: $e1='' для нулевых элементов так будет выше XML возвращает истину или нет? Я считаю, что все в порядке проверить, является ли элемент пустым или нет с xsi: nil и выше вернет false.

ответ

4

Если ваше преобразование является ориентированным на схему, а исходный документ проверен на соответствие схеме, вы можете проверить, имеет ли элемент xsi: nil = "true", используя функцию fn: nilled().

Если XSLT не поддерживает схему, то xsi: nil - это как любой другой атрибут. Вы можете использовать тест

e1[@xsi:nil='true' and not(child::node())] 

Точный тест на использование зависит от того, какие условия вы хотите проверить. Тестирование

e1[. = ''] 

, например, будет соответствовать всем следующим;

<e1/> 
<e1 xsi:nil="true"/> 
<e1><f/></e1> 
<e1><!-- x --></e1> 
+0

В XML-мире нет такой вещи, как null, поэтому я не уверен точно, что вы имеете в виду. Что касается вашего второго предложения, это правда, что в любом документе, пригодном для схемы, элемент с xsi: nil = "true" не будет иметь текстовых узлов или дочерних узлов элемента. У него могут быть дети с комментариями или обработкой. И вообще, не все документы являются действительными. –

+0

Ну, ответ на вопрос «было бы ли это воспринято как ...?» зависит от того, какое программное обеспечение выполняет лечение. Вы не упомянули о каком-либо программном обеспечении базы данных в своем вопросе, поэтому, если это вопрос о какой-либо части программного обеспечения базы данных, возможно, вы должны сообщить нам, какой из них. Никакое XML-программное обеспечение не будет обрабатывать что-либо как null, потому что null не является концепцией XML. –

+0

Сколько раз я должен сказать вам, что я не знаю, что вы имеете в виду, когда говорите «нуль»? Нет такой вещи, как «нулевой элемент». –

Смежные вопросы