所以,我有两个文档节点变量,其中第一个是静态的,第二个是动态创建的。
<xsl:variable name="my_document_node_variable1" as="document-node()">
<xsl:document>
<root>
<element>1</element>
<element>2</element>
<element>3</element>
</root>
</xsl:document>
</xsl:variable>
<xsl:variable name="my_document_node_variable2" as="document-node()">
<xsl:document>
<root>
<xsl:for-each select="$my_document_node_variable1/root/element">
<new_element>
<!-- some content here -->
</new_element>
</xsl:for-each>
</root>
</xsl:document>
</xsl:variable>
问题是:在for-each-loops中,从第二个循环开始,我想访问我在前一个循环中创建的元素,即new_element-element。
编辑:对不起,它接近它并不清楚我的意思。第二次尝试解释:
说到
<xsl:for-each select="$my_document_node_variable1/root/element">
这是第一次,一切都很好。让我们说,for-each-loop创建这样的内容:
<new_element> hi hi </new_element>
变量“my_document_node_variable2”现在应如下所示:
<root>
<new_element> hi hi </new_element>
</root>
但现在是
的第二个周期<xsl:for-each select="$my_document_node_variable1/root/element">
我想在这里做的是:把你在前面的循环中创造的东西转换成它。 所以,我必须访问
<new_element> hi hi </new_element>
来自
<xsl:for-each select="$my_document_node_variable1/root/element">
我希望,现在很清楚。
有没有办法,或者这根本不可能?
答案 0 :(得分:1)
你很亲密。您需要做的就是选择节点<xsl:value-of select="."/>
<?xml version="1.0" encoding="UTF-8"?>
<xsl:stylesheet version="2.0" xmlns:xsl="http://www.w3.org/1999/XSL/Transform" xmlns:fo="http://www.w3.org/1999/XSL/Format" xmlns:xs="http://www.w3.org/2001/XMLSchema" xmlns:fn="http://www.w3.org/2005/xpath-functions">
<xsl:output method="xml" indent="yes"/>
<xsl:template match="/">
<xsl:for-each select="$my_document_node_variable2">
<xsl:copy>
<xsl:apply-templates/>
</xsl:copy>
</xsl:for-each>
</xsl:template>
<xsl:variable name="my_document_node_variable1" as="document-node()">
<xsl:document>
<root>
<element>1</element>
<element>2</element>
<element>3</element>
</root>
</xsl:document>
</xsl:variable>
<xsl:variable name="my_document_node_variable2" as="document-node()">
<xsl:document>
<root>
<xsl:for-each select="$my_document_node_variable1/root/element">
<new_element>
<xsl:value-of select="."/>
</new_element>
</xsl:for-each>
</root>
</xsl:document>
</xsl:variable>
</xsl:stylesheet>
修改强>
我认为这就是你想要的:
<xsl:for-each select="$my_document_node_variable2">
<xsl:copy-of select="."/>
</xsl:for-each>
完整代码:
1
2
3
输出:
<root>
<new_element>1</new_element>
<new_element>2</new_element>
<new_element>3</new_element>
</root>
修订完整代码:
<?xml version="1.0" encoding="UTF-8"?>
<xsl:stylesheet version="2.0" xmlns:xsl="http://www.w3.org/1999/XSL/Transform" xmlns:fo="http://www.w3.org/1999/XSL/Format" xmlns:xs="http://www.w3.org/2001/XMLSchema" xmlns:fn="http://www.w3.org/2005/xpath-functions">
<xsl:output method="xml" indent="yes"/>
<xsl:template match="/">
<xsl:for-each select="$my_document_node_variable2">
<xsl:copy-of select="."/>
</xsl:for-each>
</xsl:template>
<xsl:variable name="my_document_node_variable1" as="document-node()">
<xsl:document>
<root>
<element>1</element>
<element>2</element>
<element>3</element>
</root>
</xsl:document>
</xsl:variable>
<xsl:variable name="my_document_node_variable2" as="document-node()">
<xsl:document>
<root>
<xsl:for-each select="$my_document_node_variable1/root/element">
<new_element>
<xsl:value-of select="."/>
</new_element>
</xsl:for-each>
</root>
</xsl:document>
</xsl:variable>
</xsl:stylesheet>
答案 1 :(得分:0)
我并不完全清楚您的要求,但一般来说,如果您使用多组节点,则需要将变量绑定到节点而不是依赖于上下文项。例如
<xsl:for-each select="$A/node-set-1">
<xsl:variable name="N1" select="."/>
<xsl:for-each select="$B/node-set-2">
<xsl:variable name="N2" select=".">
.....