我在A中有一个值列表,在B中有一个值列表。 我想为B中的值输出A,(或重复)的值。因此,如果我们在B中有4个值,我们在A中重复3个值,4次。
离
<a>
<v>1</v>
<v>2</v>
<v>3</v>
</a>
<b>
<v>y</v>
<v>z</v>
</b>
应该导致
<x>1</x>
<x>2</x>
<x>3</x>
<x>1</x>
<x>2</x>
<x>3</x>
这是我尝试过的
<xsl:foreach select="a/v">
<xsl:foreach select="b/v">
<x><xsl:value-of select="."></x>
</xsl:foreach>
</xsl:foreach>
答案 0 :(得分:1)
考虑到良好的输入:
<强> XML 强>
<root>
<a>
<v>1</v>
<v>2</v>
<v>3</v>
</a>
<b>
<v>y</v>
<v>z</v>
</b>
</root>
以下样式表:
XST 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="/root">
<xsl:copy>
<xsl:for-each select="b/v">
<xsl:for-each select="/root/a/v">
<x><xsl:value-of select="."/></x>
</xsl:for-each>
</xsl:for-each>
</xsl:copy>
</xsl:template>
</xsl:stylesheet>
将返回:
<?xml version="1.0" encoding="UTF-8"?>
<root>
<x>1</x>
<x>2</x>
<x>3</x>
<x>1</x>
<x>2</x>
<x>3</x>
</root>
稍高效的版本:
<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="/root">
<xsl:variable name="a">
<xsl:for-each select="a/v">
<x><xsl:value-of select="."/></x>
</xsl:for-each>
</xsl:variable>
<xsl:copy>
<xsl:for-each select="b/v">
<xsl:copy-of select="$a"/>
</xsl:for-each>
</xsl:copy>
</xsl:template>
</xsl:stylesheet>
答案 1 :(得分:0)
给定输入XML:
var chart_graph_ent = d3.select(".chart").selectAll(".chart__graph")
.data(data)
.enter()
.append("div").attr("class", "chart__graph")
chart_graph_ent.append("div").attr("class", "chart__graph__min")
...
1.0 XSLT样式表:
<?xml version="1.0" encoding="UTF-8"?>
<root>
<a>
<v>1</v>
<v>2</v>
<v>3</v>
</a>
<b>
<v>y</v>
<v>z</v>
</b>
</root>
提供输出:
xmlns:xsl="http://www.w3.org/1999/XSL/Transform">
<xsl:output method="xml" version="1.0" encoding="UTF-8" indent="yes"/>
<xsl:template match="/root">
<xsl:apply-templates select="b/v"/>
</xsl:template>
<xsl:template match="b/v">
<xsl:apply-templates select="../../a/v"/>
</xsl:template>
<xsl:template match="a/v">
<x><xsl:value-of select="."/></x>
</xsl:template>
</xsl:stylesheet>
最好避免使用123123
循环并改为使用模板。