Конструкция для удаления ведущих нулей отлично работала в Altova XML Spy. С саксонская-HE 9,4 Java получил исключение:Почему XSLT lookahead шаблон не работает в Saxon-HE 9.4 java
Ошибка при XSL: стоимость из линии 6 на колонке 59 question.xslt: FORX0002: Ошибка при 4 символа в регулярном выражении «^ 0 + (?! $) ": ожидается())
Код:
<?xml version="1.0" encoding="UTF-8"?>
<xsl:stylesheet version="2.0" xmlns:xsl="http://www.w3.org/1999/XSL/Transform" xmlns:xs="http://www.w3.org/2001/XMLSchema" xmlns:fn="http://www.w3.org/2005/xpath-functions">
<xsl:output method="xml" version="1.0" encoding="UTF-8" indent="yes"/>
<xsl:template match="/">
<result>
<xsl:value-of select="replace('00012','^0+(?!$)','')"/>
</result>
</xsl:template>
</xsl:stylesheet>
у меня есть обходной путь, вопрос теоретический. Возможно, должны использоваться специальные символы?
Спасибо за ответ. Такой паттен работал на Java. Я надеялся, что если Саксон использовал класс Java «java.util.regex.Pattern» для оценки, он должен работать. Но теперь ясно, что все работало без исключения, как указано в спецификации XPath. Упоминается в вопросе шаблона только образец. Некоторые примечания о примере ниже. Образец удаляет ведущие нули, преобразует «0012 в« 12 »и« 000 »в« 0 ». Обработанный узел имеет тип« xs: string », а для пустых строк выражение« string (xs: integer (.)) »Вызывает Если добавить «0» к началу строки, все должны работать нормально. Я использовал другие способы обхода, если шаблон не является проблемой. – pasha701