Элемент XML содержит как пустые, так и непустые значения. Мне нужно захватить первый непустой элемент. Я пробовал циклы for-each с условным оператором when / select или if, но читая другие сообщения. Кажется, это должно быть просто сделать с помощью select = "" в XSL.
For-each с select / if условные операторы всегда возвращают несколько значений, когда я только хочу, чтобы первый непустой элемент и его значение были
возвращено / присвоено моей переменной или непосредственно в HTML-коде XSL.
Я также пытался следовать этому примеру для выполнения чего-то подобного:
Получить непустой элемент, используя XPATH
но моя переменная всегда возвращает 'empty'.
Вот фрагмент XML, который я обрабатываю с пустыми и непустыми значениями элементов для ifid:
<transaction>
<SurePayDetails>
<Subfield>
<ifid></ifid>
</Subfield>
</SurePayDetails>
<SurePayDetails>
<Subfield>
<ifid></ifid>
</Subfield>
</SurePayDetails>
<SurePayDetails>
<Subfield>
<ifid>0022</ifid>
</Subfield>
</SurePayDetails>
</transaction>
Я попытался получить доступ / присвоить переменной первый непустой
элемент, используя следующее:
<xsl:variable name="auth_code" select="/transaction/SurePayDetails/Subfield/ifid[text()[string-length(.) > 0]][1]"/>
который, как я понимаю, выберет первый элемент ifid, длина которого больше 0, а [1]
выберет это значение.
Я не уверен, правильно ли я ссылаюсь на XML в приведенном выше select=""
, потому что, если я перейду к документу со следующим:
`<xsl:for-each select="//ns1:transaction/ns1:SurePayDetails/ns1:Subfield">
.
.
<xsl:variable name="auth_code" select="ns1:ifid"/>`
код auth_code заполняется как пустыми, так и непустыми значениями, как и ожидалось.
Спасибо!