这是我的XML数据结构:
5;38.482;
8;39.812;
9;41.115;
实际上不仅有AW~BB,而且A~Z + AA~AZ + BA~BZ ....超过100属性, 如果我想选择所有属性以B开头,那就是B + BA~BZ, 在这种情况下,只有BA& BB,每行结束后换行 那就是:
<xsl:stylesheet version="2.0" xmlns:xsl="http://www.w3.org/1999/XSL/Transform">
<xsl:output method="text" indent="yes"/>
<xsl:template match="/">
<xsl:variable name="headers1"
select="MPIFile/Body/Data/row/@*
[starts-with(name(), 'B')]"/>
<xsl:for-each select='$headers1'>
<xsl:value-of select="."/>
<xsl:text>;</xsl:text>
</xsl:for-each>
</xsl:template>
</xsl:stylesheet>
我该怎么做? 这是我到目前为止的方式:
5;38.482;8;39.812;9;41.115;
但输出为
step 1:
private Bag<Integer>[] array = (Bag<Integer>[]) new Bag[V];
for all indexes:
array[i] = new Bag<Integer>();
这不对,怎么解决这个问题? 非常感谢
答案 0 :(得分:0)
在输出中,您希望输入中的每一行都能发生一次。作为软件构造的基本原则,应该向您建议您希望对输入中的每一行评估一部分XSLT程序。
但是你没有变换的任何部分可以被描述为只处理输入的一行。因此,您当前的草图中没有可以放置换行符的位置,以便每行插入一次。
考虑这样的结构:
<xsl:stylesheet ... >
<xsl:output method="text"/>
<xsl:template match="row">
<xsl:apply-templates select="@*[starts-with(name(), 'B')]"/>
<xsl:message>We have just done one row!</xsl:message>
... other end-of-row code here ...
</
<xsl:template match="@*">
<xsl:value-of select="concat(., ';')"/>
</
</
现在,您应该明白在哪里放置XSLT表达式以在输出中生成换行符。如果您查阅标记为近似重复的问题,您应该知道如何编写这样的表达式。