我有一些XML代码和一个XSLT。在XSLT内部,我有几个模板。 在一种情况下,我需要重新使用XML的已翻译部分第二,第三,......时间。
我在这里有一些示例代码:
<!-- XML imput -->
<!-- this is a definition -->
<?xml version='1.0' encoding='utf-8'?>
<root>
<pardef id='defId1' keepwithnext='true' keeptogether='true'>
<code event='hidewhen'>
<formula>
Foo=""
</formula>
</code>
</pardef>
<!-- the definition is used here by referncing the id -->
<par def='defId1'>
<field type='text' kind='editable' name='bar'/>
</par>
<!-- and a second one -->
<par def='defId1'>
<field type='text' kind='editable' name='bar'/>
</par>
</root>
我的XSL:
<!-- XSL -->
<?xml version='1.0' encoding='utf-8'?>
<root>
<!-- template which should be applied -->
<xsl:template match="dxl:field|dxl:sharedfieldref" name="field">
<!-- do some stuff here -->
</xsl:template>
<!-- ??? cannot be a static name but should compute from the template name (which is pardef) and the given id
<xsl:when test="parent::dxl:par">
<xsl:apply-templates select="???"/>
</xsl:when>
</root>
结果代码应该是这样的:
<par formula="...">
<field.../>
</par>
<par formula="...">
<field.../>
</par>
我已经有了pardef的模板,应该再次应用。 我希望你能跟着我;-) BTW:我正在使用Webstorm的XSL转换 - 但我无法确定使用哪个处理器。
赞赏Xpath选择器的任何帮助!