Xml 如何在节点文本之后但子元素之前添加空格?

Xml 如何在节点文本之后但子元素之前添加空格?,xml,xslt,xpath,Xml,Xslt,Xpath,以下是我的示例XML: <index> <indextext> <index.text1>Here goes some text<link attribute1="this" attribute2="that">and here is a link</link></index.text1> </indextext> </index> 。。。但正如上面一段所解释的那样,

以下是我的示例XML:

<index>
    <indextext>
        <index.text1>Here goes some text<link attribute1="this" attribute2="that">and here is a link</link></index.text1>
    </indextext>
</index>
。。。但正如上面一段所解释的那样,这是行不通的

我的问题是如何选择
链接
节点之前的文本,或者如何选择
链接
节点本身并在其前面输入空格,但保留所有属性

奖金问题-有没有办法让我自动选择一组以名称
index.text开头的不同节点?例如,是否有一种方法可以自动选择
index.text
index.text1
index.text2
等?
index.text*
有效吗


解决了-我找到了问题所在。基本上,我需要调用另一个模板,它位于“main”代码中,实际处理呈现文档链接。还有很多代码需要我熟悉

如果你知道你想在所有这些链接元素前面留一个空间,那么就这么做吧

  <xsl:template match="index.text1//link">
    <xsl:text> </xsl:text>
    <xsl:call-template name="identity"/>   
  </xsl:template>


对于通配符元素匹配,请使用

  <xsl:template match="*[starts-with(local-name(), 'index.text')]//link">
    <xsl:text> </xsl:text>
    <xsl:call-template name="identity"/>   
  </xsl:template>


对于您的额外问题:是的,xpath支持使用函数进行模式匹配。谢谢你。我成功地插入了空格(这实际上与我使用的方法相同),但“属性仍然丢失”-嗯,它们并没有真正丢失。我看到的问题是,通常
链接
节点会转换为HTML本身中的
节点,但是,在这种情况下,由于某种原因,链接节点的关闭会从HTML中消失,因此
链接
节点仍保留在HTML中。同样,只有当我弄乱了
链接
节点模板时才会发生这种情况,如果我不使用它,则不会发生这种情况。非常奇怪。。。有什么帮助吗?@Deusdies,如果你想转换
链接
元素,那么调用仅仅复制它的标识模板显然是行不通的。相反,您应该调用一个转换元素的模板,例如用
替换
,例如
。当然,您还需要
链接
元素属性的模板。
<xsl:template match="@* | node()" name="identity">
  <xsl:copy>
    <xsl:apply-templates select="@* | node()"/>
  </xsl:copy>
</xsl:template>
  <xsl:template match="*[starts-with(local-name(), 'index.text')]//link">
    <xsl:text> </xsl:text>
    <xsl:call-template name="identity"/>   
  </xsl:template>