2013-07-29 98 views
0

我正在使用TextWrangler的查找和替换功能。我有一个XML文件,所有包含该标签的文件夹:TextWrangler - 从XML中删除命名空间

<song xmlns="http://openlyrics.info/namespace/2009/song" version="0.8" createdIn="OpenLP 2.0.1" modifiedIn="OpenLP 2.0.1" modifiedDate="2013-06-23T21:33:21"> 

我想从标签中删除的命名空间和其他信息,并得到的只是这样的:

<song> 

我的问题是双重的:

  1. 首先,我无法让TextWrangler找到任何包含尖括号的东西。我不知道如何搜索字面角括号。
  2. 对于每个文件,modifiedDate =标记的部分是不同的。因此,我需要一些能够找到标签中包含的所有文本的东西,不管它说什么。

有什么建议吗?

回答

0

对于这类任务来说,真正值得充分熟悉XSLT。在文本编辑器中执行它总是会有局限性(例如,您的代码很可能依赖于特定顺序的属性)。这也可能是如此简单:

<xsl:transform version="1.0" xmlns:xsl="http://www.w3.org/1999/XSL/Transform"> 

<xsl:template match="*"> 
    <xsl:element name="{local-name()}"> 
    <xsl:apply-templates/> 
    </xsl:element> 
</xsl:template> 

</xsl:transform> 

这实际上将删除命名空间,并从所有元素,而不仅仅是歌曲元素的属性,但是这可以很容易地通过添加另一模板规则被改变。

+0

感谢您的提示。这完成了工作。但是,我想将该模板与另一个模板结合使用,该模板实际上可以展示XML的样式。我试着把这个模板放在我的面前,但现在我的不工作。我如何在同一个XSLT中使用这两个模板? – brohrig

+0

您可以编写一个转换流水线作为单个样式表或一系列单独的样式表。第二个提供更好的模块化和重用,但有点复杂。要在单个样式表中执行此操作,请将第一个模板(或转换)的结果捕获到变量中,然后以不同模式将变量应用于该变量。 –