我试图在ms access中导入带有XSLT的XML,以便它以逗号分隔的方式导入列表
我的XML:
<entry>
<title>Adobe</title>
<description>Adobe Acrobat</description>
<title>Adobe1</title>
<description>Adobe Acrobat1</description>
<title>Adobe2</title>
<description>Adobe Acrobat2</description>
</entry>
我的尝试:
<xsl:for-each select="entry">
<xsl:if test="position() > 1">, </xsl:if>
<xsl:value-of select="title"/>
</xsl:for-each>
预期结果: Adobe、Adobe1、Adobe2
发布于 2017-02-03 22:49:15
您的XML只有一个entry
,因此xsl:for-each
中的代码只能运行一次。执行<xsl:value-of select="title" />
只会选择该entry
中的第一个title
(假设XSLT1.0,即)
改到这个..。
<xsl:for-each select="entry/title">
<xsl:if test="position() > 1">, </xsl:if>
<xsl:value-of select="."/>
</xsl:for-each>
请注意,在XSTL2.0中,您可以将上面的代码片段完全替换为.
<xsl:value-of select="entry/title" separator="," />
编辑:假设XSLT看起来像这样..。
<iavmNotice xmlns="http://stuff.com" noticeId="138643">
<title>Cisco Vulnerability</title>
<techOverview>
<entry>
<title>2012-2490</title>
<description>Cisco ID 71.</description>
</entry>
<entry>
<title>2012-2525</title>
<description>Cisco ID 69.</description>
</entry>
</techOverview>
</iavmNotice>
然后,要在上下文中使用xsl:for-each
,需要添加如下模板:
<xsl:template match="stuff:techOverview">
<xsl:copy>
<xsl:for-each select="stuff:entry/stuff:title">
<xsl:if test="position() > 1">, </xsl:if>
<xsl:value-of select="."/>
</xsl:for-each>
</xsl:copy>
</xsl:template>
请注意以下各点:
stuff
前缀按照输入XML绑定到正确的命名空间。stuff:techOverview
匹配的其他模板https://stackoverflow.com/questions/42034187
复制相似问题