Я объединять два файла, файл WADL и XML-файл, содержащий фрагменты DITA, чтобы в конечном итоге сгенерировать файл DITA. фрагменты DITA могут быть строкой текста или блоком тегов DITA. пытаясь определить, если элемент в файле фрагментов DITA заполняется (или даже не существует) со следующим испытанием:XSLT тест для текста или всего
<xsl:variable name="docIDtext" select="$docId//doc[@id=$resourcepath]/*|text()"/>
<xsl:choose>
<xsl:when test="$docIDtext">
<xsl:copy-of select="$docIDtext"/>
</xsl:when>
<xsl:otherwise>
<draft-comment author="doc">FIXME: missing DocID</draft-comment>
</xsl:otherwise>
</xsl:choose>
однако, тест на $docIDtext
всегда верно, что не является правильным результатом. это то, что надоедает «*». Как я могу выполнить этот тест?
, к сожалению, пропустил вопрос. оператор ' ' работает так, как и переменная, указанная в моем вопросе. проблема в том, что я хочу проверить переменную, чтобы увидеть, есть ли у нее контент, но тест для 'docIDtext' всегда возвращает true. –
masterbrawn
Отвечая на ваш ответ, я понял, что мне не хватает простого решения: просто проверьте наличие '$ docId // doc [@ id = $ resourcepath]'. таким образом мне не нужно заботиться о том, что такое содержимое тега, или даже если оно имеет содержимое, только если оно существует. для моего конкретного использования, этого достаточно. спасибо за ответ и триггер. – masterbrawn
Это зависит от контекста вашего XSLT-фрагмента, но и ваша команда 'copy-of', безусловно, работает не так, как вы ожидаете для текстовых узлов элемента' doc' по причине, приведенной в моем ответе. – nwellnhof