Мне нужно добавить растущий, не перезагружаемый порядковый номер для ВСЕХ элементов в XML, расположенных в их новой позиции. Я попытался использовать это в качестве атрибутаXSLT: Получение позиции элемента в новом XML
<xsl:value-of select="count(preceding::* | ancestor::*) + 1" />
Однако, это приведет к порядковым номерам, основываясь на первоначальном месте элемента в документе.
Мой оригинальный XML, созданный из нескольких файлов XML с «копией из»:
<title>
<article>
<paragraph>
<subparagraph>
</subparagraph>
</paragraph>
</article>
</title>
я удалить статью «ненужным» тег из нового XML с помощью XSLT. В результате этот:
<title id="1">
<paragraph id="3">
<subparagraph id="4">
</subparagraph>
</paragraph>
</title>
результат я хочу:
<title id="1">
<paragraph id="2">
<subparagraph id="3">
</subparagraph>
</paragraph>
</title>
Каков оптимальный путь для достижения этой цели?
XSLT не отслеживает выходное дерево. Если вы не можете вывести требуемые цифры из ввода (например, **, а не ** подсчитывать узлы 'article'), выполните другой проход. –
@ michael.hor257k Спасибо, я боялся, что это будет так. – tualinda
Имейте в виду, что вы можете делать оба прохода в той же таблице стилей, если вы предпочитаете - путем вывода первого прохода в переменную. –