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>
Моя проблема двоякая:
- Во-первых, я не могу заставить TextWrangler найти что-либо, включающее угловые скобки. Я не знаю, как искать буквальную угловую скобку.
- Часть 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>
Это фактически удалит пространства имен и атрибуты из всех элементов, не только из элемента песни, но это можно легко изменить, добавив другое правило шаблона.