我已经获得了<xsl:key>
引用的对象列表,并且我试图找出{{1}内引用对象的顺序1}}(或类似的块)。
我有以下XML:
<xsl:value-of>
以下XSLT:
<document>
<question>
<text>Please demonstrate your compliance with some boring standard.</text>
<answer>
<attachment ref="11111111-2222-3333-4444-555555555555"/>
<attachment ref="22222222-3333-4444-5555-666666666666"/>
</answer>
</question>
<question>
...
</question>
<attachment id="11111111-2222-3333-4444-555555555555">
<name>employee_names_and_titles.doc</name>
...
</attachment>
<attachment id="22222222-3333-4444-5555-666666666666">
<name>standard_operating_procedures.doc</name>
...
</attachment>
</document>
我想要的文档布局是在一个流程中包含所有问题和答案,答案经常引用后面附录中的内容。在附录中,每个&#34;附件&#34;应该在它自己的页面上,并且每个附件应该递增编号。
所有这一切都按预期发生;但是,目前答案是请参阅employee_names_and_titles.doc ,当我真正想要的是参考附录A 。
有没有办法可以弄清楚附件的位置ref =&#34; 1111 ......&#34;在附件列表中,在问答部分的范围内?有没有更好的格式化XML的方法,所以也许我不会遇到这个问题?
答案 0 :(得分:2)
有没有办法可以弄清楚依恋的位置 REF =&#34; 1111 ...&#34;在附件列表中
您可以计算其先前的附件兄弟姐妹,例如:
<xsl:template match="answer/attachment">
<fo:block>
Refer to Appendix <xsl:number value="count(key('attachments', @ref)/preceding-sibling::attachment) + 1" format="A"/>
</fo:block>
</xsl:template>
答案 1 :(得分:0)
xsl:number
,即使在XSLT 1.0(http://www.w3.org/TR/xslt#number)中,“根据源树中当前节点的位置插入一个数字”,所以如果引用是带有附件的1:1和按照相同的顺序,您可以让XSLT处理器付出艰苦的努力:
<xsl:template match="answer/attachment">
<fo:block>Refer to Appendix <xsl:number level="any" format="A"/></fo:block>
</xsl:template>