stackoverflow和XML和XSLT的新手。 我正在接收外部XML提要,这些提要无法编辑,只能使用XSLT进行转换。例如,XML提要可能如下所示:
<competition name="Comp1">
<event name="test1">
<competitor name="competitor1">
<competitor name="competitor2">
<competitor name="competitor3">
</event>
</competition>
和标准xsl
<xsl:template match="event">
<xsl:attribute name="name"><xsl:value-of select="@name" /></xsl:attribute>
</xsl:template>
将提出以下内容:
competitor1
competitor2
competitor3
有没有办法单独打印名称?即,竞争对手1本身,然后我需要的地方,我可以打印竞争对手2。这有可能吗?
我的猜测是,我必须拆分竞争对手的名字,但我再也无法编辑XML文件,因此不确定采取何种方法。 而对于更多坏消息,显示输出的系统将无法使用html。
Updated
所需的输出类似于:
competitor1 competitor2 competitor3
通过这样做,我可以按照我需要的方式组织输出,即。像上面那样
非常感谢任何帮助, 提前致谢
答案 0 :(得分:0)
这只是一个指导您的示例,具体取决于您可能希望更改
的输出格式<br/>
换行符,请查看this帖子中的示例。
文本输出格式(空格/制表符/换行符等)总是有点复杂,所以要准备花一些时间。
鉴于XML:
<competition name="Comp1">
<event name="test1">
<competitor name="competitor1"/>
<competitor name="competitor2"/>
<competitor name="competitor3"/>
</event>
<event name="test2">
<competitor name="competitorX"/>
<competitor name="competitorY"/>
<competitor name="competitorZ"/>
</event>
</competition>
使用以下xslt:
<?xml version="1.0"?>
<xsl:stylesheet version="1.0" xmlns:xsl="http://www.w3.org/1999/XSL/Transform">
<xsl:template match="/">
<xsl:apply-templates/>
</xsl:template>
<xsl:template match="competition/event">
<xsl:value-of select="@name" />
<br/>
<xsl:apply-templates/>
<br/>
</xsl:template>
<xsl:template match="competitor">
<xsl:value-of select="@name" />
<xsl:text> </xsl:text>
</xsl:template>
</xsl:stylesheet>
会给你以下输出:
test1
<br/>
competitor1 competitor2 competitor3
<br/>
test2
<br/>
competitorX competitorY competitorZ
<br/>