Немного трудно следовать тому, что вы хотите сделать, и есть несколько проблем с опубликованным кодом. Прежде всего, это характер обработки, который, кажется, находится в одном большом корневом разделе. Часто, если вы перебираете элементы, мы используем их для прочесывания и выбора контекста для наших элементов, создания переменных, которые ищут эти значения в другом месте, и так далее. Однако у меня возникают проблемы с пониманием того, что эти идентификаторы и что они должны делать. Например, у вас есть
<input type="hidden" id="hiTopicID" name="hiTopicID"
value="{/root/BaseInfo/QueryData/TopicID}" />
Но путь '/ root / BaseInfo / QueryData / TopicID' не существует во входном XML-файле, поэтому не знаете, что и где искать.
Тем не менее, я подозреваю, что вы ищете что-то вроде;
<!-- First, just a simple variable as a shortcut for a long path -->
<xsl:variable name="lut" select="/root/BaseInfo/QueryData/TopicID" />
<!-- Then, use it for finding a section with a sub-element of that value -->
<xsl:value-of select="/root/TopicAnalysisbyTopicAnalysisID[TopicID=$lut]/TopicDescription" />
(замените TopicDescription тем, что вам нужно)
Я все еще думаю, что это неясно, и я подозреваю, что способ настройки контекста данных XML и кода XSLT не поможет вам понять, как лучше всего это сделать. Использование ... - лучший способ убедиться, что поток работает лучше, и вы не увязнете в слишком сложном входном XML.
Приветствия. :)