Я работаю над небольшим проектом, изучающим XSL, и столкнулся с проблемой ...
У меня есть файл Docbook с серией действий для людей, классифицированных по Департаменту.Однако иногда у меня будет человек, который работает в малой группе, а также в своей собственной.Чтобы избежать дублирования данных, я указал, что узел человека либо содержит данные в своем узле, либо узел внешней ссылки, который ссылается на его основной узел.Когда я перебираю всех людей в группе, мне нужно проверить, является ли этот узел связанным узлом или узлом данных, и соответствующим образом скорректировать мои переменные.
Вот код выбора
<xsl:choose>
<xsl:when test="xref">
<xsl:variable name="TAG_ID" select="xref/@linkend" />
<xsl:variable name="NAME" select="//*[@id='$TAG_ID']/para[@id='who']" />
<xsl:variable name="EMAIL" select="//*[@id='$TAG_ID']/para[@id='who']/ulink/@url" />
<xsl:variable name="IMAGE" select="//*[@id='$TAG_ID']/para[@id='image']" />
<xsl:variable name="MEET" select="//*[@id='$TAG_ID']/para[@id='meet']" />
<xsl:call-template name="output_person" />
</xsl:when>
<xsl:otherwise>
<xsl:variable name="NAME" select="para[@id ='who']" />
<xsl:variable name="EMAIL" select="para[@id='who']/ulink/@url" />
<xsl:variable name="IMAGE" select="para [@id='image']" />
<xsl:variable name="MEET" select="para [@id='meet']" />
<xsl:call-template name="output_person" />
</xsl:otherwise>
</xsl:choose>
Однако, когда я пытаюсь запустить это, я получаю следующие ошибки ...
runtime error: file team.xsl line 92 element img
Variable 'IMAGE' has not been declared.
xmlXPathCompiledEval: evaluation failed
После некоторых поисков в Интернете я одновременно видел код, который выполняет это, и люди говорят, что это невозможно.
Итак, мой вопрос двоякий ...
Могу ли я выбрать конкретный узел на основе переменной?
и если нет, то можно ли это сделать?