2012-12-10 10 views
1

У меня есть довольно большой файл XSL с большим количеством шаблонов. Теперь мне нужно добавить к нему шаблоны из другого XSL-файла. К сожалению, некоторые имена шаблонов, используемые там, совпадают с именами шаблонов в первом файле. Поэтому, если я просто скопирую и вставляю их, весь XSL будет разбит.Как рефакторировать XSL-файлы перед слиянием?

Каков самый простой способ рефакторинга второго файла XSL перед его добавлением? Могу ли я поместить свои шаблоны в другое пространство имен или что-то еще?

ответ

1

Если вы пишете новый код, вы можете поместить имена шаблонов в пространство имен.

Если код уже существует, то вы можете написать новое преобразование, которое обрабатывает преобразование XSLT и заменяет любой

/*/xsl:template/@name 

с его значением сцепленного с '_', $SomeSuffix, где $SomeSuffix является глобальным/внешним параметром.

Вы можете использовать тот же процесс, чтобы заменить имена tepmplates на те, которые находятся в пространстве имен, которое указывается в качестве параметра.

+0

Да, рефакторинг XSL с XSL. Кажется красивым! Я попробую. – svz

+0

@svz, добро пожаловать - пожалуйста, дайте мне знать, если у вас возникнут какие-либо проблемы. –

+0

@DimitreNovatcev, работал как шарм, хотя мне пришлось переименовать узлы «call-template». – svz

0

Если у вас есть именованные шаблоны (т. Е. template name="foo"), то да, используйте пространства имён, чтобы отличить их, т. Е. <xsl:stylesheet xmlns:xsl="http://www.w3.org/1999/XSL/Transform" xmlns:l1="http://example.com/l1" version="1.0"><xsl:template name="l1:foo">...</xsl:template></xsl:stylesheet>.

Смежные вопросы