Является ли java: class стандартным использованием пространств имен XSL? - PullRequest
3 голосов
/ 22 декабря 2011

Я пытался интернационализировать некоторые XSLT и заставить их использовать файлы свойств. Я дошел до того, что думаю, что у меня есть код, который должен работать, но я получаю сообщение об ошибке, которое я нашел причину здесь: Java / XSLT: не удается найти подходящую функцию с 1 аргументом

Я, как говорится, использую saxon (версия 8) и пытаюсь определить, используется ли такой код: xmlns:lcl="java:com.mycode.localisation.LocaleUtilities" xmlns:resource="java:java.util.ResourceBundle.getBundle('taskStrings', lcl:getCurrentLocale())"> ...

является частью «стандартного» XSL или неофициального / проприетарного расширения, поддерживаемого только определенными парсерами. Мне нужно это знать, поскольку мне нужно обеспечить определенную гибкость в используемом парсере, и он может оправдать не поддержку saxon, если он не поддерживает это, потому что он не полностью соответствует стандартам.

Ошибка, которую он вызывает, это, кстати,

Cannot find a matching 1-argument function named
{java:java.util.ResourceBundle.getBundle('taskStrings', lcl:getCurrentLocale())}getString()

Ответы [ 2 ]

1 голос
/ 22 марта 2012

Если вы пытаетесь интернационализировать свой XSLT, вы можете использовать функцию key () и элемент.Вам, вероятно, понадобится преобразовать файлы свойств в XML.

Конечно, если вам абсолютно необходимо оставить файлы свойств как есть, вы можете написать свой собственный URIResolver с помощью saxon, который может читатьфайл свойств и верните его как XML в XSL.

0 голосов
/ 14 сентября 2012

Дальнейшие исследования показали, что saxon поддерживает то, что я хочу, и проблемы возникали из-за использования методов экземпляра, что вызывает осложнения.Теперь я сделал все заново, используя только статические вызовы методов, чтобы все было просто, и все работает

...