我一直在 w3schools.com 上阅读有关 xpath 轴的信息,并且一直在尝试寻求帮助,但我很难弄清楚要实际搜索什么。
我有一个 xsl 样式表,用于将各种 xml 文件转换为 pdf 打印。我坚持的部分是,当我需要更改某些格式时,我已经确定了至少 3 种不同的场景。我已经找到了一种在两种情况下更改格式的方法,但第三种是其他两种情况的混合体,当我只想要一组格式时,我一直在显示两组格式。
请让我知道是否有任何其他信息有用,谢谢!
场景一:
<TASK>
<REVST>Some revised text
</TASK>
场景二:
<LIST>
<PARA>
<REVST />Some Text <REVEND />
</PARA>
</LIST>
场景 3:
<TASK>
<PARA>
<REVST />Some other revised text <REVEND />
</PARA>
</TASK>
似乎适用于场景 1 的方法是将其<xsl:if test="parent::*TASK/REVST">
放在样式表的一部分中,该样式表执行一个 for-each 并遍历每个“ITEM”。似乎适用于场景 2 的方法是<xsl:if test="descendant::REVST">
在 PARA 模板中进行此测试。
但是对于场景 3,我最终都显示,而它应该只是来自 PARA 模板的格式。
有什么建议么?甚至是搜索词的建议?任何帮助将不胜感激 :)
我知道我有很多东西要学,我很感激所提供的帮助,但我仍然不太明白如何让它不显示修订格式(页面右侧的一个栏)当只有部分文本被指出需要修改时,是否需要对整个文件进行修改?
<LIST>
<PARA>
<REVST/>
THIS IS SOME TEXT THAT SHOULD BE MARKED BY A REVISION BAR.
<REVEND/>
</PARA>
</LIST>
而像这样的案例,我需要为基本上整个文档显示一个修订栏。
<TASK>
<ELE1/>
<REVST/>
<ELE2/>
<TITLE>The Title</TITLE>
<ELE3>
<ELE4>
<TITLE>General</TITLE>
<LIST>
<LITEM>
<PARA>This is some paragraph text.</PARA>
</LITEM>
</LIST>
</ELE4>
</ELE3>
</TASK>
我尝试了所呈现的内容,但除非我在文本或 PARA 部分添加 *,否则它似乎并不适用。我可能在那里也遗漏了一些东西。
<xsl:template match="TASK/*text()[preceding-sibling::*[1][self::REVST] and following-sibling::*[1][self::REVEND]]">
<fo:block color="red" border-right="solid black 2pt" margin-right="16pt">
<xsl:apply-templates />
</fo:block>
</xsl:template>
<xsl:template match="LIST1/*PARA/text()[preceding-sibling::*[1][self::REVST] and following-sibling::*[1][self::REVEND]]">
<fo:block color="green" border-right="solid black 2pt" margin-right="16pt">
<xsl:apply-templates />
</fo:block>
</xsl:template>
有什么额外的建议吗?我仍然被困住:(