【问题标题】:TextWrangler - removing namespaces from XMLTextWrangler - 从 XML 中删除命名空间
【发布时间】:2013-07-29 23:04:27
【问题描述】:

我正在使用 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= 部分因每个文件而异。因此,我需要能够找到标签中包含的所有文本的东西,无论它说什么。

有什么建议吗?

【问题讨论】:

    标签: xml macos replace tags textwrangler


    【解决方案1】:

    对于此类任务,充分了解 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>
    

    这实际上会从所有元素中删除命名空间和属性,而不仅仅是歌曲元素,但可以通过添加另一个模板规则轻松更改。

    【讨论】:

    • 感谢您的提示。这样就完成了工作。但是,我想将该模板与另一个实际展示 XML 样式的模板结合使用。我试着把这个模板放在我之前,但现在我的不起作用。如何在同一个 XSLT 中使用这两个模板?
    • 您可以将转换管道编写为单个样式表或一系列单独的样式表。第二个提供了更好的模块化和重用性,但有点复杂。要在单个样式表中执行此操作,请在变量中捕获第一个模板(或转换)的结果,然后以不同的模式将模板应用于变量。
    猜你喜欢
    • 2020-12-03
    • 2020-08-30
    • 1970-01-01
    • 1970-01-01
    • 2010-11-17
    • 1970-01-01
    • 2020-04-06
    • 2010-10-03
    • 2015-04-20
    相关资源
    最近更新 更多