У меня есть несколько документов XML. Каждый из этих документов имеет некоторые элементы с тем же именем (скажем).Сортировка элементов XML из нескольких документов с помощью подхода Muenchian
Пример двух из этих XML-документов будет (упрощение):
input1.xml
<xml>
<body>
<word>A1</word>
<word>A2</word>
<word>B1</word>
</body>
</xml>
и
input2.xml
<xml>
<body>
<word>A2</word>
<word>B1</word>
<word>B2</word>
</body>
</xml>
мне нужно (через XSLT 1.0), чтобы отсортировать все элементы двух файлов, избегая повторений.
Выходной файл мне нужно:
output1.xml
<xml>
<body>
<word>A1</word>
<word>A2</word>
<word>B1</word>
<word>B2</word>
</body>
</xml>
Я попытался сделать это именования входных файлов в качестве параметров в файле XSLT:
<xsl:param name="doc1">input1.xml</xsl:param>
<xsl:param name="doc2">input2.xml</xsl:param>
Тогда Я создал элемент:
<xsl:key name="words" match="word" use="."/>
И я применил некоторые шаблоны элементов комбинации двух файлов, например:
<xsl:apply-templates select="(document($doc1)|document($doc2))//body"/>
Наконец, в шаблоне я использовал выше созданный ключ для применения Muenchian подхода:
<xsl:template match="body">
<xsl:for-each select="//hitza[generate-id() = generate-id(key('words',.)[1])]
<xsl:sort select="."/>
<xsl:value-of select="."/>
</xsl:for-each>
</xsl>
Таким образом я получаю список элементов, но сначала я получаю все элементы файла input1.xml, а затем элементы файла input2.xml:
<xml>
<body>
<word>A1</word>
<word>A2</word>
<word>B1</word>
<word>A2</word>
<word>B1</word>
<word>B2</word>
</body>
</xml>
I не может понять, как получить список не повторяющихся элементов из этих двух файлов.
Muenchian grouping основано на ключах, и клавиши работают над документом, а не с коллекцией документов. Не можете ли вы использовать XSLT 2.0 с Saxon или XmlPrime или Altova, чтобы использовать 'xsl: for-each-group' или' distinct-values'? –
Благодарим вас за быстрый ответ. Я не знаком с xslt 2.0, поэтому я не уверен, сколько будет работы с моим кодом от 1.0 до 2.0, но я дам ему попробовать, зная, что подход Muenchian здесь не будет работать. Спасибо! –