3
我有,我想分析创建HTML下面的XML文件。我的问题是,我无法解析它,因为我想。XSLT - 如何阅读所有子节点有序,具有相同和不同的名称标签
我想要做的是HTML输出我<items>
。所以,我希望有一个<paragraph>
成为<div>
,<image>
是一个<img>
及其子节点是它的属性“SRC”和“ALT”。
<itemlist>
<item>
<paragraph>pA</paragraph>
<image>
<url>http://www.com/image.jpg</url>
<title>default image</title>
</image>
<paragraph>pB</paragraph>
<paragraph>pC</paragraph>
<link target='#'>linkA</link>
<paragraph>pD</paragraph>
<link target='#' >linkB</link>
<image>
<url>http://www.com/image2.jpg</url>
<title>default image 2</title>
</image>
</item>
<item>
<paragraph>pB</paragraph>
<paragraph>pC</paragraph>
<image>
<url>http://www.com/image2.jpg</url>
<title>default image 2</title>
</image>
<link target='#'>linkA</link>
<paragraph>pD</paragraph>
<link target='#'>linkB</link>
</item>
</itemlist>
如果我上<item>
foreach循环和通过应用模板,如匹配=“段”值写入随后匹配=“图像”,那么所有<paragraph>
将<image>
,这将之前写入不会导致正确的输出。
下面是我期待的输出。任何人有一个想法如何做到这一点?
<div id="item">
<div>pA</div>
<img src='http://www.com/image.jpg' title='default image' />
<div>pB</div>
<div>pC</div>
<a href='#'>linkA</a>
<div>pD</div>
<img src='http://www.com/image2.jpg' title='default image 2' />
</div>
<div id="item">
<div>pB</div>
<div>pC</div>
<img src='http://www.com/image2.jpg' title='default image 2' />
<a href='#'>linkA</a>
<div>pD</div>
<a href='#'>linkB</a>
</div>
-----编辑---- 目前,我有这样的事情
<xsl:for-each select="itemlist/item">
<xsl:apply-templates select="paragraph"/>
<xsl:apply-templates select="link"/>
<xsl:template match="paragraph">
<xsl:value-of select="." />
</xsl:template>
<xsl:template match="link">
<xsl:value-of select="." />
</xsl:template>
</xsl:for-each>
虽然你的答案确实输出我显示的结果。它对我来说似乎并不正确。我已经加入我与 – Daniel
@Daniel此解决方案使用的代码,误差必须在你身边。请参阅http://www.xmlplayground.com/SaB3U9。 – Tomalak
Stefanos,一方面注意:'match'表达式不需要完整的XPath表达式。 '等就足够了。 –
Tomalak