使用xslt 1.0中的Document()迭代另一个Xml

时间:2016-12-30 08:22:30

标签: xml xslt

我想使用document($ fileRefernce)迭代另一个xml中的循环。

参见代码

<xsl:for-each select="document($fileRefernce)/*//Info/element/item">                      
           {
           "@Name": "<xsl:value-of        select="document($fileRefernce)/*//Info/element/item/@Name" />" ,
        "@Quantity": "<xsl:value-of select="document($fileRefernce)/*//Info/element/item/@quantity" />"
        }<xsl:if test="$elementCount!=position()">,</xsl:if>                       
    </xsl:for-each>

其中变量elementCount只是存储Info / elemnt节点的数量。

如果我遍历信息循环,则使用它,然后它总是给出第一个节点的值,即使它第二次迭代。

我得到这样的输出:

{
"@Name" : "xyz",
 "@Quantity": "1"
 },

 {
"@Name" : "xyz",
 "@Quantity": "1"
 },

任何人都可以告诉我如何解决这个问题。

提前致谢

1 个答案:

答案 0 :(得分:2)

每次都会给你第一个节点因为你每次都选择第一个节点......

package com.silverfix.groovytestapp;

import android.support.v7.app.AppCompatActivity;
import android.os.Bundle;
import android.view.View;
import android.widget.Button;

import app.MainClass;

public class MainActivity extends AppCompatActivity {

    private Button button;

    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);

        button = (Button) findViewById(R.id.create_doc);

        button.setOnClickListener(new View.OnClickListener() {
            @Override
            public void onClick(View view) {
                MainClass.main(null);
            }
        });
    }
}

这里有一个绝对路径,根本就没有使用当前的上下文节点。尝试简化表达式以使用相对路径......

<xsl:value-of select="document($fileRefernce)/*//Info/element/item/@Name" />