Можно ли преобразовать атрибут из "book1chapter2" в "chapter2"?xslt удалить часть атрибута
Например, этот узел:
<a myAttribute="part1chapter2" />
Должно быть трансформироваться в
<a myAttribute="chapter2" />
Я пробовал:
<xsl:variable name="chapter" select="replace('part1chapter2', 'book1', '')" />
Но это приводит к ошибке компиляции:
ERROR: 'Error checking type of the expression 'funcall(replace, [literal-expr(part1chapter2), literal-expr(part1), literal-expr()])'.'
FATAL ERROR: 'Could not compile stylesheet'
Я использую XSLT версии 2.0.
раствор без какой-либо библиотеки будет оценить :)
EDIT:
Java-код, скомпилировать и запустить с JAVAC -g TestXslt.java; java TestXslt;
public static void main(String[] args) throws IOException, URISyntaxException, TransformerException {
TransformerFactory factory = TransformerFactory.newInstance();
Source xslt = new StreamSource(new File("../transform.xslt"));
Transformer transformer = factory.newTransformer(xslt);
Source text = new StreamSource(new File("../input.xml"));
String r = new String();
StreamResult result = new StreamResult(new File("../output.xml"));
transformer.transform(text, result);
}
Java версия Javac 1.6.0_27
Что таблицы стилей компилятор вы используете? Возможно, это не совсем совместимо с XSLT 2.0. Посмотрите на [этот вопрос] (http://stackoverflow.com/questions/3067113/xslt-string-replace) для конкретного ответа XSLT 1.0. –
Мне хотелось бы решение XSLT 2.0. – Charles
Добавление upvote, потому что я думаю, что downvotes совершенно необоснованны. –