Я хотел бы спросить, есть ли
Разница между следующими двумя
операторы для узлов XML:
1.проверьте, является ли узел пустым;
2.проверьте, существует ли узел или нет;
Для этого требуются различные выражения для проверки : несуществующий узел не является пустым узлом:
current_onset_date
это выбирает любые current_onset_date
дочерние элементы текущего узла. Его логическое значение равно true()
тогда и только тогда, когда существует хотя бы один такой дочерний элемент, и false()
- в противном случае.
current_onset_date/text()
это выбирает любые дочерние текстовые узлы из любых current_onset_date
дочерних узлов текущего узла. Если их нет, его логическое значение равно false()
, в противном случае - true()
,
Даже если элемент не имеет текстовых узлов в качестве дочерних, он все равно может иметь непустое строковое значение, поскольку он может иметь элементы в качестве потомков, а некоторые из этих дочерних элементов могут иметь дочерние элементы текстовых узлов.
current_onset_date[not(string(.))]
это выбирает любые current_onset_date
дочерние элементы текущего узла, которые имеют пустую строку ('') в качестве значения строки. Это может хорошо подходить для «пустого элемента».
Если под пустым вы подразумеваете элемент, строковое значение которого пустое или только пробел, то это выражение:
current_onset_date[not(normalize-space())]
это выбирает любые current_onset_date
дочерние элементы текущего узла, которые имеют пустую строку ('') или строку только для пробелов в качестве строкового значения.
Может кто-нибудь сказать мне, где моя ошибка
есть
В вашем коде:
<xsl:for-each select="claim_export_xml_row ">
<xsl:if test="claim_number =$mother_claim_no
and /current_onset_date ">
выражение в атрибуте test
всегда false()
, потому что /current_onset_date
означает: верхний элемент (документа) с именем "current_onset_date", но верхний элемент в вашем случае с именем claim_export_xml
Вы, вероятно, хотите :
claim_number =$mother_claim_no and current_onset_date
А если вы хотите, чтобы элемент был "непустым", то:
claim_number =$mother_claim_no
and
current_onset_date[normalize-space()]