Xml XSLT2反向标记化结果
我是一个尝试使用XSLT2.0将XML文件从一个模式移动到另一个模式的初学者。我在大部分文档中都取得了很大的成功,但有一部分阻碍了我。输入XML元素是地理信息,例如:Xml XSLT2反向标记化结果,xml,xslt,Xml,Xslt,我是一个尝试使用XSLT2.0将XML文件从一个模式移动到另一个模式的初学者。我在大部分文档中都取得了很大的成功,但有一部分阻碍了我。输入XML元素是地理信息,例如: <spatial>United States -- Washington -- Asotin county; United States -- Idaho;</spatial> 美国--华盛顿--阿索丁县;美国--爱达荷州; 在上面的示例中,我们有两个位置,从宏到微,用分号(;)分隔。但是,结果模式希望
<spatial>United States -- Washington -- Asotin county; United States -- Idaho;</spatial>
美国--华盛顿--阿索丁县;美国--爱达荷州;
在上面的示例中,我们有两个位置,从宏到微,用分号(;)分隔。但是,结果模式希望它们以相反的顺序排列,每个都在自己的标记中,并用逗号分隔,即:
<mods:geographic>Asotin county, Washington, United States</mods:geographic>
<mods:geographic>Idaho, United States</mods:geographic>
Asotin县,华盛顿,美国
美国爱达荷州
我们目前正在使用以下方法,但将我们限制为6个可能的选项(对于我们的测试数据集很好,但我们有大量数据集需要转换,并且无法直接控制它们):
我希望能想出一些可以接受任何数量的论点的东西。根据其他帖子,我曾尝试在其中使用数字降序排序,但每次都会抛出一个错误(我相信是因为它希望排序成为第一条指令,但如果是,我不知道以后如何引用它)
非常感谢您的帮助。您觉得:
<xsl:template match="spatial">
<xsl:for-each select="tokenize(., ';')[normalize-space()]">
<geographic>
<xsl:value-of select="reverse(tokenize(., ' -- '))" separator=", "/>
</geographic>
</xsl:for-each>
</xsl:template>
那么:
<xsl:template match="spatial">
<xsl:for-each select="tokenize(., ';')[normalize-space()]">
<geographic>
<xsl:value-of select="reverse(tokenize(., ' -- '))" separator=", "/>
</geographic>
</xsl:for-each>
</xsl:template>
第一个条目有效,第二个条目没有更改。结果如下:Asotin县,华盛顿,美国爱达荷州
Edit:Sorry,我不知道如何让评论像原来的帖子一样漂亮:数据这些不是我看到的结果:我必须将第一个标记化参数包装在规范化空间中,因为某些条目上有额外的空间——这就把它扔掉了。标记为已接受,谢谢!这对第一个条目有效,第二个条目没有改变。结果如下:Asotin县,华盛顿,美国爱达荷州
Edit:Sorry,我不知道如何让评论像原来的帖子一样漂亮:数据这些不是我看到的结果:我必须将第一个标记化参数包装在规范化空间中,因为某些条目上有额外的空间——这就把它扔掉了。标记为已接受,谢谢!