2014-09-05 64 views
-1

我输入的图像如图所示,并且我希望输出如图所示。 我的问题是如何控制列表级别,因为输出文件只有一个级别,所以如果有人有一个想法,我会很高兴 源文件可以有2个以上的级别。 输入:源文件中的XSLT级别,但目标文件中没有级别

xml version="1.0"?> 
<Index> 
<Indentatio> 
<Explicatus>1)</Explicatus> 
<Char>1)on Level 1</Char> 
</Indentatio> 
<Index> 
<Indentatio> 
<Explicatus>a)</Explicatus> 
<Char> a) on level 2</Char> 
</Indentatio> 
<Indentatio> 
<Explicatus>b)</Explicatus> 
<Char> b) on level 2</Char> 
</Indentatio> 
</Index> 
<Indentatio> 
<Explicatus>2)</Explicatus> 
<Char>1)on Level 1</Char>v 
</Indentatio> 
</Index> 

输出:

<List> 
<ListItem Level="1" Class="1"> 
1) on level 1 
1) on level 1 
</ListItem> 
<ListItem Level="2" Class="1"> 
<ID>a)</ID> 
a) on level 2 
</ListItem> 
<ListItem Level="2" Class="1"> 
<ID>b)</ID> 
b) on level 2 
</ListItem> 
<ListItem Level="1" Class="1"> 
<ID>2)</ID> 
2) on level 1 
</ListItem> 
</List> 
+0

我看不到任何图片。但是你不应该将你的输入和输出作为图片发布,而应该包含XML _as text_,以便我们可以复制和粘贴它,并且还包括迄今为止尝试过的XSLT。请编辑问题以包含这些详细信息。 – 2014-09-05 14:05:27

+0

我不知道图片发生了什么,但这里是代码。 – 2014-09-05 17:43:01

+0

我不认为你的输出与输入匹配。如果是这样,你需要解释如何。 – 2014-09-05 19:47:21

回答

0

我猜你想要的东西,如:

XSLT 1.0

<xsl:stylesheet version="1.0" 
xmlns:xsl="http://www.w3.org/1999/XSL/Transform"> 
<xsl:output method="xml" version="1.0" encoding="UTF-8" indent="yes"/> 

<xsl:template match="/"> 
    <List> 
     <xsl:for-each select="//Indentatio"> 
      <ListItem Level="{count(ancestor::Index)}" Class="1"> 
       <ID><xsl:value-of select="Explicatus"/></ID> 
       <xsl:value-of select="Char"/> 
      </ListItem> 
     </xsl:for-each> 
    </List> 
</xsl:template> 

</xsl:stylesheet> 

应用到你的输入例如,这将返回:

<?xml version="1.0" encoding="UTF-8"?> 
<List> 
    <ListItem Level="1" Class="1"> 
     <ID>1)</ID>1)on Level 1</ListItem> 
    <ListItem Level="2" Class="1"> 
     <ID>a)</ID> a) on level 2</ListItem> 
    <ListItem Level="2" Class="1"> 
     <ID>b)</ID> b) on level 2</ListItem> 
    <ListItem Level="1" Class="1"> 
     <ID>2)</ID>1)on Level 1</ListItem> 
</List> 

请注意,输出混合内容很少是一个好主意。

+0

这正是我所期待的,非常好的解决方案,非常感谢。 问题是,我根据输入文件从一个系统获取数据,并且必须根据输出文件中使用的模式将数据传送到另一个系统。 – 2014-09-05 20:58:23