目前我正在尝试将单词xml转换为xml文件。 它正试图通过识别风格来做到这一点。
我目前在这里面临问题,因为我对这次XLST转换非常陌生,我正在寻求帮助。
我正在尝试在下面的模板中添加一个名为<standingOrder>
的新元素,从我的单词xm看起来像
- 规划条例(取消有关吉祥物和旅行者的条文) 最多20分钟(常规订单第23号) abc先生请假来携带xxxxxxxxxxxx。备注:会员搬家和 反对这项议案的议员每人最多可发言10分钟。
醇>
在上面的文字中,最多20分钟(常规订单No.23)(突出显示)将有一个名为StandingOrderReference的样式,如果找到文本Standing Order No.23,则下面是xslt代码,那么它应该构建一个孩子名为<standingOrder>
的节点和值23应该是节点的innertext
。为此,我在下面做了,但我无法显示价值。
<xsl:when test="@styleId='StandingOrderReference'">
<xsl:element name="standingOrder">
<xsl:value-of select="substring-after(.,'(Standing Order ')"/>
</xsl:element>
</xsl:when>
<standingOrder>23</standingOrder>
请纠正我在哪里做错了。 一如既往,我们非常感谢任何帮助。
答案 0 :(得分:1)
根据评论,如果您将实际的xml摘录放在帖子中会更好。但是,做出一些假设,以下是xslt:
<xsl:template match="/xml/someElement">
<xsl:choose>
<xsl:when test="@styleId='StandingOrderReference'">
<xsl:element name="standingOrder">
<xsl:value-of select="
substring-before(
substring-after(.,'(Standing Order No. '),
')')"/>
</xsl:element>
</xsl:when>
</xsl:choose>
</xsl:template>
解析这份文件:
<xml>
<someElement styleId="StandingOrderReference">
**Up to 20 minutes (Standing Order No. 23)** Mr a
</someElement>
</xml>
要返回您的目标,即:
<standingOrder>23</standingOrder>
请注意,您还需要截断子字符串 - 我使用了substring-before
来执行此操作。请注意,xml中的No.
后面还有 (Standing Order
一词。