我目前正在尝试将非常混乱的xml的一部分转换为更具可读性的内容,但当我的代码没有产生我想要的内容时。
我可以获得一些关于我的代码有什么问题以及如何修复它的反馈吗?
输入示例:
<root>
<body>
<para>
<heading> name </heading>
</para>
<para> This is the name </para>
<para>
<heading> Usage </heading>
</para>
<para> This is the usage </para>
</body>
<root>
我想看到的输出是:
<root>
<conbody>
<section>
<title> Name </title>
<p> This is the name </p>
</section>
<section>
<title> Usage </title>
<p> This is the usage </p>
<conbody>
<root>
我的代码当前如下所示:
<xsl:template match="body">
<conbody>
<xsl:for-each-group select="para" group-starting-with="para[heading]">
<section>
<title>
<xsl:apply-templates select="element()"/>
</title>
<p>
<xsl:apply-templates select="*"/>
</p>
</section>
</xsl:for-each-group>
</conbody>
</xsl:template>
内容没有被正确复制,我不知道为什么?
这是因为您需要将模板应用于current-group()
。
您可以尝试在第一个xsl中使用
和当前组()[1]
:应用模板当前组()[not(位置()=1)]
在第二个xsl:应用模板
中;这应该会让您接近。
下面是一个稍微不同的方法示例,用于创建标题和p元素。。。
XML输入
<root>
<body>
<para>
<heading> name </heading>
</para>
<para> This is the name </para>
<para>
<heading> Usage </heading>
</para>
<para> This is the usage </para>
</body>
</root>
XSLT 2.0
<xsl:stylesheet version="2.0" xmlns:xsl="http://www.w3.org/1999/XSL/Transform">
<xsl:output indent="yes"/>
<xsl:strip-space elements="*"/>
<xsl:template match="@*|node()">
<xsl:copy>
<xsl:apply-templates select="@*|node()"/>
</xsl:copy>
</xsl:template>
<xsl:template match="body">
<conbody>
<xsl:for-each-group select="para" group-starting-with="para[heading]">
<section>
<xsl:apply-templates select="current-group()"/>
</section>
</xsl:for-each-group>
</conbody>
</xsl:template>
<xsl:template match="para">
<xsl:apply-templates/>
</xsl:template>
<xsl:template match="para/text()">
<p><xsl:value-of select="."/></p>
</xsl:template>
<xsl:template match="heading">
<title><xsl:apply-templates/></title>
</xsl:template>
</xsl:stylesheet>
XML输出
<root>
<conbody>
<section>
<title> name </title>
<p> This is the name </p>
</section>
<section>
<title> Usage </title>
<p> This is the usage </p>
</section>
</conbody>
</root>
我试图集成Camel以使用XSLT2.0,但遇到一个异常,无法“编译样式表” 我的骆驼配置路线在下面 还放置了xalan。jar和saxon9he。JAVA_HOME/lib/endroved目录下的jar。还有什么我需要做的吗
这是一个非常基本的问题,但我不理解for each group是如何工作的。我想把没有子节的相邻顶层节合并到一个列表中。如果有带有小节的部分,我想以不同的方式对待它们,保持顶层不变,并将子部分合并到一个列表中。我不想把这些混为一谈。 源XML 期望的结果 XSLT片段这绝对是不正确的。此外,这不是我尝试过的唯一方式,只是最不混乱的帖子。我认为对于每个组应该工作的方式是,我一直得到一个错误,不允许将
我正在阅读“Spring MVC,初学者指南”这本书。在一节中,它建议使用矩阵变量来传递一个高价格和低价格。在他们的示例中,声明指定了一个字符串列表作为第二个参数(见下文)。 但是,由于每个键只有一个值,我想我会尝试声明: 当我尝试访问与存储在中的特定键相关联的“value”(使用和时,我不断得到运行时的错误。 当我在debug中检查priceParams时,数据类型显示为,目标映射显示为。 我开
问题内容: 这是Java代码的片段: 它显示5。但是为什么声明了for循环的声明部分,却没有声明? 在uu上,您将引用2D数组…这不是一项作业。我正在准备Java认证。干杯 问题答案: 由于你是一个。因此,当您对其进行迭代时,您将首先获得,然后可以对该数组进行迭代以获取单个元素。 因此,您的外部循环具有as类型,因此具有该声明。如果您在另一个内循环中进行迭代,则将得到以下类型:-
我能够在Java中使用XSLT1.0,如以下示例所示:- copy.xml copy.xsl copy.java 输出
那么,让我先展示一下代码。 所以,正如你所猜测的,我正在研究LinkedList。所以,对于一个给定的值作为一个函数中的参数; 特别是,我们能用这个等式符号“==”来表示对象类吗?一般来说,除了字符串,我们能在任何类中使用“==”吗?如果是字符串,那么就不是。如果是整数,那么肯定是。但是现在,你怎么能比较呢?