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
通过这样做,我可以按照我需要的方式组织输出,比如上面的
非常感谢您的帮助,提前感谢
这只是一个指导您的示例,根据您可能希望更改的输出格式
<br/>
换行到其他地方,看看这篇文章的例子。
文本输出格式(空格/制表符/换行符等)总是有点复杂,所以要准备好花一些时间
给定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/>