У меня есть проблема, решение которой я не знаю. Я использую xslt 1.0.
Моя задача следующая:
У меня есть файл, в котором есть ссылки на разные XML-файлы. Моя работа состоит в том, чтобы получить имена этих файлов, а затем перебрать каждый из этих файлов в поисках тега <Genre>
. Так что, может быть, в первом файле я нахожу 3 <Genre>
элементов, во 2-м элементе 1 <Genre>
... и так далее до n-го файла.
После сбора всех элементов <Genre>
из всех файлов мне нужно отсортировать их (в них содержится строковая информация, аналогичная их названию). Чтобы отсортировать их, мне нужно иметь ВСЕ элементы <Genre>
в ОДНОЙ переменной / группе / последовательности, чтобы я мог применить к ним <xsl:sort>
.
Но я не знаю, как мне добавить / объединить / объединить элементы <Genre>
, которые я нахожу в каждом цикле из каждого файла: (
Пожалуйста, помогите ... Я пробовал уже 9 часов безрезультатно.
Код выглядит примерно так:
XML-файл с именами файлов
<document-properties>
<source-documents>
<document name="Input/Commandline.xml"/>
<document name="Input/Outputfiles.xml"/>
<document name="Input/PrimaryFunctionalities.xml"/>
<document name="Input/Requirements.xml"/>
<document name="Input/UsecaseTree.xml"/>
<document name="Input/CurrentDate.xml"/>
<document name="CommentFiles/VWCC_Test.xml"/>
</source-documents>
</document-properties>
И я делаю следующее в моем .xsl:
<xsl:for-each select="/document-properties/source-documents/*">
<xsl:for-each select="document(@name)/descendant::newTerm">
<xsl:variable name="CurrentNewTerm" select="."/>
<w:tr wsp:rsidR="00000000">
<w:tblPrEx>
<w:tblCellMar>
<w:top w:w="0" w:type="dxa" />
<w:bottom w:w="0" w:type="dxa" />
</w:tblCellMar>
</w:tblPrEx>
<w:tc>
<w:tcPr>
<w:tcW w:w="2480" w:type="dxa" />
</w:tcPr>
<w:p wsp:rsidR="00000000" wsp:rsidRDefault="00C06CD8">
<w:pPr>
<w:spacing w:before="60" w:after="60" />
<w:rPr>
<w:b />
</w:rPr>
</w:pPr>
<w:r>
<w:rPr>
</w:rPr>
<w:t>
<xsl:value-of select="$CurrentNewTerm"/>
</w:t>
</w:r>
</w:p>
</w:tc>
<xsl:variable name="abbrvFileName" select="/document-properties/abbreviation-document/*[@name]"/>
<xsl:for-each select="document($abbrvFileName)/descendant::term">
</xsl:for-each>
<w:tc>
<w:tcPr>
<w:tcW w:w="2480" w:type="dxa" />
</w:tcPr>
<w:p wsp:rsidR="00000000" wsp:rsidRDefault="00C06CD8">
<w:pPr>
<w:spacing w:before="60" w:after="60" />
<w:rPr>
<w:b />
</w:rPr>
</w:pPr>
<w:r>
<w:rPr>
</w:rPr>
<w:t>
<xsl:value-of select="$CurrentNewTerm"/>
</w:t>
</w:r>
</w:p>
</w:tc>
</w:tr>
</xsl:for-each>
</xsl:for-each>
Как уже говорилось ранее, таким образом я получаю теги одного файла одновременно ... но мне нужен способ сохранить "найденные" теги каждого цикла for-each в списке / группе / последовательности ... так что я могу сделать сортировку по всем тегам всех файлов в виде одного списка.