Я совершенно новичок в XSLT.
Это проблема, которую я пытаюсь решить часами:
Я автоматически генерирую оглавление для XML-документа, который до сих пор прекрасно работал. Однако я хотел бы заменить тег-заполнитель в моем исходном XML-коде только что сгенерированным ток-кодом.
Таким образом, вывод должен включать в себя весь документ с замененным тегом placeholder-toc на автоматически сгенерированный toc xml.
Вот что я пробовал:
Допустим, у меня есть метка-заполнитель в любом месте документа и я хочу заменить это / те. Я думал, что мог бы пройтись по всем узлам по node () и проверить, совпадает ли имя узла с моим тегом-заполнителем:
<xsl:template match="node()">
<xsl:choose>
<xsl:when test="divGen">
<!-- apply other template to generate toc-->
</xsl:when>
<xsl:otherwise>
<xsl:copy-of select="node()"/>
</xsl:otherwise>
</xsl:choose>
</xsl:template>
Однако оператор if не будет соответствовать такому.
редактировать:
Хорошо, вот исходный документ (кодированный TEI - пространство имен TEI удалено):
<TEI>
<teiHeader>
<fileDesc>
<titleStmt>
<title>Title</title>
</titleStmt>
<publicationStmt>
<p>Publication information</p>
</publicationStmt>
<sourceDesc>
<p>Information about the source</p>
</sourceDesc>
</fileDesc>
</teiHeader>
<text>
<front>
<titlePage>
<byline>title page details</byline>
</titlePage>
</front>
<body>
<divGen type="toc"/>
<div type="part">
<div type="section">
<head>heading1</head>
</div>
<div type="section">
<head>heading2</head>
</div>
</div>
<div type="part">
<div type="section">
<head>heading3</head>
</div>
<div type="section">
<head>heading4</head>
</div>
<div type="section">
<head>heading5</head>
</div>
</div>
</body>
<back> </back>
</text>
Я бы хотел автоматически сгенерировать ток из значений заголовка и заменить тег divGen автоматически созданным кодом токена. Однако обратите внимание, что тег divGen может находиться в любом месте документа, но не снаружи тела.
Есть идеи?
Chris