使用XSLT将XML提要拆分为行



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/>

相关内容

  • 没有找到相关文章

最新更新