我想使用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"
},
任何人都可以告诉我如何解决这个问题。
提前致谢
答案 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" />