【发布时间】:2014-05-11 19:38:51
【问题描述】:
我有这种 XSL
<xsl:stylesheet xmlns:xsl="http://www.w3.org/1999/XSL/Transform" version="1.0">
<xsl:output indent="yes"/>
<xsl:template match="dataroot">
<xml><xsl:apply-templates/></xml>
</xsl:template>
<xsl:template match="M_17">
<package id="{package_id}" cat="{cat}">
<nazwa><xsl:value-of select="nazwa"/></nazwa>
<xsl:if test="author"><author><xsl:value-of select="author"/></author></xsl:if>
<xsl:if test="www"><www><xsl:value-of select="translate(www,'#','')"/></www></xsl:if>
<xsl:if test="opis"><opis><xsl:value-of select="opis"/></opis></xsl:if>
<xsl:if test="img"><img><xsl:value-of select="translate(img,'#','')"/></img></xsl:if>
<xsl:if test="depends"><depends><xsl:value-of select="depends"/></depends></xsl:if>
<xsl:if test="conflicts"><conflicts><xsl:value-of select="conflicts"/></conflicts></xsl:if>
<xsl:if test="after"><after><xsl:value-of select="after"/></after></xsl:if>
<xsl:if test="replaces"><replaces><xsl:value-of select="replaces"/></replaces></xsl:if>
</package>
</xsl:template>
</xsl:stylesheet>
但是当有例如。取决于此代码中将显示的 2 个值
<depends>modload com1node</depends>
但我想通过跟随的 XSL 将其转换为:
<depends>modloader</depends>
<depends>com1node</depends>
这应该发生在:依赖、冲突、之后和替换
如何将这些字符串(如果它们出现在源 XML 中)拆分成简单的字符串(如示例所示,每行一个)?
核心 XML 的一部分
<?xml version="1.0" encoding="UTF-8"?>
<dataroot xmlns:od="urn:schemas-microsoft-com:officedata" generated="2014-05-11T15:51:32">
<Mnc_172>
<ID>1</ID>
<package_id>minecraft</package_id>
<cat>lib</cat>
<www>#http://minecraft.net/#</www>
<nazwa>Minecraft</nazwa>
<author>Mojang</author>
<opis>Game - build your own world!</opis>
<img>#/mc.png#</img>
</Mnc_172>
<Mnc_172>
<ID>2</ID>
<package_id>modloader</package_id>
<cat>lib</cat>
<www>#http://minecraftforum.net/topic/75440-x/#</www>
<nazwa>ModLoader</nazwa>
<author>Risugami</author>
<opis>ModLoader - library to load mods</opis>
<img>#/gen.png#</img>
<replaces>modL forging</replaces>
</Mnc_172>
...
</dataroot>
【问题讨论】:
-
见
fn:tokenizew3.org/TR/xpath-functions -
我对这种东西一无所知。这段代码不是我的。我在 5 小时前遇到了 XSL,所以当有我还不完全理解的代码组合时,你能告诉我如何在这段代码中插入它吗?
-
您能否发布一个您的 XML 源代码示例?
-
@Admaster,抱歉——我一直在使用 XQuery 和 XPath,它们使用相同的功能,因此我可以为您指出正确的功能,但我不知道/不知道 XSLT。
-
@CharlesDuffy 您的建议需要 XSLT 2.0; OP 的样式表显示 XSLT 1.0。