Я использую xslt для преобразования большого xml в более мелкие связанные файлы html. У меня возникли проблемы с функцией generate-id(), поскольку сгенерированные идентификаторы не совпадают для html href = "", а идентификаторы в именах файловusing generate-id() для xsl: имя файла документа результата и ссылка на HTML
Я создаю следующие файлы через xsl: result-document:
index.html | d1e83523.html | d1e83524.html | d1e83525.html | ...
index.html должен содержать список со ссылками на другие * .html файлы
index.html, что я хочу, но все это я получаю разные идентификаторы:
<ul>
<li><a href="d1e83523.html">Sample 1</a></li>
<li><a href="d1e83524.html">Sample 2</a></li>
<li><a href="d1e83525.html">Sample 3</a></li>
</ul>
XSL для создания I ndex.html:
<xsl:template match="lab/*">
<xsl:result-document encoding="utf-8" method="html" href="HTML_out/index.html" >
<html>
<head></head>
<body>
<ul>
<xsl:for-each select="chapter/heading">
<li>
<a href="{generate-id()}.html">
<xsl:value-of select="foo"/>
</a>
</li>
</xsl:for-each>
</ul>
</body>
</html>
</xsl:result-document>
</xsl:template>
XSL создать другой * .html:
<xsl:template match="chapter/*[not(self::heading)]">
<xsl:for-each select=".">
<xsl:result-document encoding="utf-8" method="html" href="HTML_out/{concat(generate-id(), '.html')}" >
<html>
<head></head>
<body>
<xsl:apply-templates/>
</body>
</html>
</xsl:result-document>
</xsl:for-each>
</xsl:template>
XML-образец (примечание: несколько описание -подобные структурированные элементы follo крыло)
<lab>
<description>
<chapter>
<heading>Example</heading
<operation>other elements</operation>
<operation>other elements</operation>
...
</chapter>
...
</description>
</lab>
Я благодарен за любую помощь!
EDIT: Я использую генерировать-идентификатор(), чтобы получить уникальное имя файла для многих файлов
Большое вам спасибо! К сожалению, я до сих пор не совсем понимаю, как работает функция generate-id() ... Я попытался различить, чтобы добраться до тех же наборов узлов внутри скобок функций, но ничего не работало для меня. Однако это решение получило трюк! – DTR9000