Я пытаюсь написать некоторый xslt, который будет перечислять все изображения в моем xml (s!)
Я использую ключ для этого, чтобы я мог ссылаться на изображения позже в содержании, моя проблема здесьЯ не могу понять, как получить постоянное значение.Значение: в xml есть ссылки на несколько других документов, которые я загружаю с помощью document (), всякий раз, когда я «ввожу» новый документ, ключ сбрасывается, поэтому в документах, имеющих 2 изображения, я получаю счетчик двух, в других - один
чтобы вы могли себе представить
корневой документ:
<root>
<chapter href="chapters/doc1.xml"/>
<chapter href="chapters/doc2.xml"/>
</root>
doc1.xml
<root>
<image id="a"/>
<image id="b"/>
</root>
doc2.xml
<root>
<image id="f"/>
</root>
Я нашел здесь старую ветку в стеке потока, которая, как мне кажется, идет в моем направлении: XSLT: создать «ключ» для нескольких документов? , но я не смог заставить его работать.
что в данный момент работает: я определил ключ
<xsl:key name="image" match="image" use="@id"/>
, который я использую позже, как это
key value for image:<xsl:value-of select="count(key('image', @id)/preceding::image) + 1"/>
, это всегда дает упомянутый результат (для doc1 я получаю "key value for image:1 key value for image:2
"bur for doc2 я снова получаю" key value for image:1
", и здесь я ожидал бы 3)
, пытаясь приспособиться к связанной публикации, я пытался загрузить все документы, используя коллекцию, и создать новый ключ, надеясь, чтовыдаст мне хотя бы все картинки для начала
<xsl:key name="images" match="image" use="all"/>
<xsl:variable name="location"><xsl:value-of select="$xml-base"/>/chapters?select=*.xml;recurse=yes</xsl:variable>
<xsl:variable name="documents">
<xsl:value-of select="collection($location)"/>
</xsl:variable>
<xsl:for-each select="collection($location)">
<xsl:message>
<xsl:value-of select="./count(key('figure','all'))"/>
</xsl:message>
</xsl:for-each>
иэто всегда дает мне 0, я даже не уверен, что использование ключа - правильный подход здесь
tldr: как я могу перечислить изображения в xslt по нескольким документам?
* редактировать так, как я думаюнемного неясно: у меня есть несколько входов xml, импортированных корневым xml, все они могут содержать изображения, у меня есть окончательный выходной файл, который должен непрерывно перечислять все изображения и иметь возможность ссылаться на них