Из xml хотите получить номер подглавы подглавы во внешней ссылке в html с помощью XSL. Я не могу подсчитать и получить правильную нумерацию подразделов в тексте ссылки xref.
Сценарий в xml: xref добавляется в подраздел 2.2 и ссылается на подраздел 1.2, подраздел 2.1 и 1.3
Ожидаемый результат в html из xml
В html к выходной ссылке должен быть добавлен правильный номер, например Подраздел 1.2, Подраздел 2.1 и Подраздел 1.3 соответственно.
Примечание: номер в подразделе 1.1, 1.2, 1.3 и т.д. c дан для справки и для лучшего понимания.
Требуется решение - необходимо подсчитать последовательность глав и подразделов, чтобы получить правильный номер подраздела в ссылке xref.
Пример xml (глава упоминается как диагностический_адт / диагностический_адт, а подраздел - как диагностический_адт / диагностический_адт / диагностический_адт).
Я использовал предоставленное решение, чтобы получить номер, но я не могу получить номер в html.
образец xsl ниже
<xsl:key name="element-by-id" match="*[@id]" use="@id"/>
<xsl:mode on-no-match="shallow-copy"/>
<xsl:template match="xref[key('element-by-id', substring(@href, 2))]">
<xsl:apply-templates select="key('element-by-id', substring(@href, 2))" mode="compute-number"/>
</xsl:template>
<xsl:template match="diagnostic_adt" mode="compute-number">
<xsl:number level="multiple" count="/*//diagnostic_adt"/>
</xsl:template>
<xsl:template match="xref">
<xsl:choose>
<xsl:when>
<xsl:variable name="xrefid" select="translate(@href, '#', '')"/>
<xsl:variable name="nos"><xsl:apply-templates select="key('element-by-id', substring(@href, 2))" mode="compute-number"/></xsl:variable>
<xsl:variable name="countN">
<xsl:choose>
<xsl:when test="contains($xrefid,'idSE')">
<xsl:value-of select="count(//diagnostic[contains(@id,$xrefid)]/preceding-sibling::*[name()='diagnostic'])+1" />
</xsl:when>
<xsl:when test="contains($xrefid,'idT')">
<xsl:choose>
<xsl:when test="contains($xrefid,'idTa')">
<xsl:value-of select="count(//table[contains(@id,$xrefid)]/preceding-sibling::*[name()='table'])+1"/>
</xsl:when>
<xsl:otherwise>
<!--<xsl:value-of select="count(ancestor-or-self::diagnostic_adt[contains(@id,$xrefid)]/diagnostic_adt)+1"/>.<xsl:value-of select="count(//diagnostic_adt[contains(@id,$xrefid)]/preceding-sibling::diagnostic_adt)+1"/>-->
<xsl:value-of select="$nos"/>
</xsl:otherwise>
</xsl:choose>
</xsl:when>
</xsl:choose>
</xsl:variable>
<script type="text/javascript">
generateIntXref( "<xsl:call-template name="get-label"><xsl:with-param name="code" select="'CLIQUER-ICI'"/></xsl:call-template><i>(
<xsl:value-of select='$countN'/>)</i>.", "<xsl:value-of select='$xrefid'/>", "<xsl:value-of select='$countN'/>" );
</script>
</xsl:when>
</xsl:choose>
</xsl:template>
образец xml
<diagnostic_adt xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" appl="" id="TEMPLATE" xml:lang="en" xsi:noNamespaceSchemaLocation="urn:ptc:names:renault:dita:xsd:diagnostic_adt.xsd">
<diagtitle translate="yes">Test xref</diagtitle>
<diagbody>
</diagbody>
<diagnostic_adt id="idSE1">
<diagtitle translate="yes">chapter 1</diagtitle>
<diagbody>
<para translate="yes">
To return to the previous screen, click here:
<END-PROCEDURE />
</para>
</diagbody>
<diagnostic_adt id="idT1">
<diagtitle translate="yes">sub-chapter 1.1</diagtitle>
<diagbody>
<para translate="yes">Test</para>
</diagbody>
</diagnostic_adt>
<diagnostic_adt id="idT2">
<diagtitle translate="yes">sub-chapter 1.2</diagtitle>
<diagbody>
<para translate="yes">Test</para>
</diagbody>
</diagnostic_adt>
<diagnostic_adt id="idT5">
<diagtitle translate="yes">sub-chapter 1.3</diagtitle>
<diagbody>
<para translate="yes">Test</para>
<para translate="yes">
<xref format="dita" href="#idT2" scope="local" translate="yes" type="diagnostic_adt" />
</para>
</diagbody>
</diagnostic_adt>
</diagnostic_adt>
<diagnostic_adt id="idSE2">
<diagtitle translate="yes">chapter 2</diagtitle>
<diagbody>
<para translate="yes">
To return to the previous screen, click here:
<END-PROCEDURE />
</para>
</diagbody>
<diagnostic_adt id="idT3">
<diagtitle translate="yes">sub-chapter 2.1</diagtitle>
<diagbody>
<para translate="yes">
<xref format="dita" href="#idT2" scope="local" translate="yes" type="diagnostic_adt" />
</para>
<para translate="yes">
<xref format="dita" href="#idT5" scope="local" translate="yes" type="diagnostic_adt" />
</para>
<para translate="yes">
<xref format="dita" href="#idT4" scope="local" translate="yes" type="diagnostic_adt" />
</para>
</diagbody>
</diagnostic_adt>
<diagnostic_adt id="idT4">
<diagtitle translate="yes">sub-chapter 2.2</diagtitle>
<diagbody>
<para translate="yes">
<xref format="dita" href="#idT3" scope="local" translate="yes" type="diagnostic_adt" />
</para>
<para translate="yes">
<xref format="dita" href="#idT5" scope="local" translate="yes" type="diagnostic_adt" />
</para>
<para translate="yes">
<xref format="dita" href="#idT2" scope="local" translate="yes" type="diagnostic_adt" />
</para>
</diagbody>
</diagnostic_adt>
</diagnostic_adt>
</diagnostic_adt>