Xml XSLT2反向标记化结果

Xml XSLT2反向标记化结果,xml,xslt,Xml,Xslt,我是一个尝试使用XSLT2.0将XML文件从一个模式移动到另一个模式的初学者。我在大部分文档中都取得了很大的成功,但有一部分阻碍了我。输入XML元素是地理信息,例如: <spatial>United States -- Washington -- Asotin county; United States -- Idaho;</spatial> 美国--华盛顿--阿索丁县;美国--爱达荷州; 在上面的示例中,我们有两个位置,从宏到微,用分号(;)分隔。但是,结果模式希望

我是一个尝试使用XSLT2.0将XML文件从一个模式移动到另一个模式的初学者。我在大部分文档中都取得了很大的成功,但有一部分阻碍了我。输入XML元素是地理信息,例如:

<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,我不知道如何让评论像原来的帖子一样漂亮:数据这些不是我看到的结果:我必须将第一个标记化参数包装在规范化空间中,因为某些条目上有额外的空间——这就把它扔掉了。标记为已接受,谢谢!