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. Часть updatedDate = тега отличается для каждого файла. Поэтому мне нужно что-то, что найдет весь текст, содержащийся в теге, независимо от того, что он говорит.

Какие-либо предложения?

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>

Это фактически удалит пространства имен и атрибуты из всех элементов, не только из элемента песни, но это можно легко изменить, добавив другое правило шаблона.

Другие вопросы по тегам