Я создаю PDF-файлы из S1000D xml и вам нужно отобразить ссылку на другой шаг, указав номер шага номер/букву. На рисунке ниже показано, что в настоящее время отображается как ссылка на 1.d. следует читать 1.c.XSL-FO Нумерация абзаца в ссылке
Источник XML, содержащий реф выглядит следующим образом:
<mainProcedure>
<proceduralStep id="S0001">
<para id="P0001">REMOVE COMPONENT XYZ.</para>
<proceduralStep id="S0002">
<para id="P0002">This is a second level procedural step.</para>
<proceduralStep id="S0003">
<para id="P0003">This is a third level procedural step.</para>
<proceduralStep id="S0004">
<para id="P0004">This is a fourth level procedural step.</para>
<proceduralStep id="S0006">
<para id="P0006">This is a fifth level procedural step.</para>
</proceduralStep>
</proceduralStep>
</proceduralStep>
</proceduralStep>
<proceduralStep id="S0005">
<para id="P0005">This is a second, second level procedural step.</para>
</proceduralStep>
<proceduralStep id="S0008">
<para id="P0008">The following sub-step has quantity data included.</para>
<proceduralStep id="S0009">
<para>Position bracket on frame and secure with bolts and washers. <emphasis
>TORQUE BOLT TO <quantity>
<quantityGroup quantityGroupType="minimum"
quantityUnitOfMeasure="ft.lbf">
<quantityValue>10</quantityValue>
</quantityGroup>
<quantityGroup quantityGroupType="maximum"
quantityUnitOfMeasure="ft.lbf">
<quantityValue>15</quantityValue>
</quantityGroup>
</quantity>
</emphasis>.</para>
</proceduralStep>
</proceduralStep>
<proceduralStep id="S0007">
<para id="P0007">This is a para with a reference to <internalRef
internalRefId="S0008" internalRefTargetType="step"> another step</internalRef
> in the procedure.</para>
</proceduralStep>
</proceduralStep>
Вот XSL У меня есть, что дает мне неправильный номер/письмо комбо. Похоже, что дает мне номер для шага, который содержит ссылку (есть еще один шаблон, который обрабатывает данные <quantity>
:.
<xsl:template match="internalRef[@internalRefTargetType='step']">
<xsl:variable name="refId" select="./@internalRefId"/>
<xsl:if test="//mainProcedure//proceduralStep/@id = $refId">
<xsl:if test="//mainProcedure/proceduralStep/@id = $refId">
<fo:inline>
<fo:basic-link internal-destination="{$refId}" color="blue" text-decoration="underline">
Step <xsl:number level="multiple" count="mainProcedure/proceduralStep" format="1."/>
</fo:basic-link>
</fo:inline>
</xsl:if>
<xsl:if test="//mainProcedure/proceduralStep/proceduralStep/@id = $refId">
<fo:inline>
<fo:basic-link internal-destination="{$refId}" color="blue" text-decoration="underline">
Step <xsl:number level="multiple" count="//mainProcedure/proceduralStep" format="1."/><xsl:number level="single" count="//mainProcedure/proceduralStep | proceduralStep" format="a."/>
</fo:basic-link>
</fo:inline>
</xsl:if>
</xsl:if>
</xsl:template>
Любая помощь в получении меня на правильный путь очень ценится
Какая версия XSLT? –
Кроме того, если бы это была ссылка на шаг 3-го уровня, отображался ли эталонный дисплей '1.a. (1)' или '1.a.1.'? Как насчет ссылки на 5-й уровень? –
@ DanielHaley Я использую XSLT 2.0, а порядок равен 1.a. (1) (a) 1. Последнее 1 подчеркнуто. Поэтому, если я ссылаюсь на шаг, необходимо создать индикаторы уровня соответствия, а «Шаг» - до нумерации. – twfurst