Компонентът xslt на Apache Camel поддържа ли xslt обработка, съобразена със схема

Опитвам се да използвам saxon за xslt обработка в apache camel. Също така искам да използвам SchemaAwareTransformer, който е част от лицензираната версия на saxon. За това зададох transformerFactoryClass = com.saxonica.SchemaAwareTransformerFactory (Лицензирана версия 9.0.0.5).

Сега в xslt,

  1. Импортирам схемата като
<xsl:import-schema namespace="http://defiml.TctML_col_v1" />
  1. декларирайте пространство от имена в декларация на стилов лист
xmlns:tct_col="http://defiml.TctML_col_v1"
  1. дефинирайте съвпадението на шаблона като
<xsl:template match="element(*,tct_col:TCT_CollateralStock)" as="element(*, defiml:DL_CollateralService)">
  . . .
</xsl:template>

Но когато стартирам, получавам грешката

Не е известна схема за това пространство от имена и не е предоставено местоположение на схема, така че не е импортирана схема; SystemID: ; Ред #: 19; Колона #: -1

Има ли механизъм за предоставяне на xslt компонент на цялата xsd схема, използвана за тази трансформация?


person Jimmy    schedule 21.04.2015    source източник
comment
Не се ли нуждаете от атрибут schema-location на вашия xsl:import-schema, за да кажете на XSLT процесора местоположението на схемата, която искате да импортирате?   -  person Martin Honnen    schedule 21.04.2015
comment
@MartinHonnen, опитах schema-location като това ‹xsl:import-schema namespace=defiml.TctML_col_v1 schema-location=Tomcat /TctML_col.xsd /› ‹xsl:import-schema namespace=defiml.somexService.V3_40 schema-location=DefiML .xsd/›. TctML_col.xsd изглежда работи, защото е единичен xsd.   -  person Jimmy    schedule 21.04.2015
comment
Но DefiML.xsd има много препратки към друга схема, която причинява грешка. Модулът null се включва рекурсивно; SystemID: ; Ред #: 3; Колона #: -1. Модулът null включва себе си рекурсивно; SystemID: ; Ред #: 4; Колона #: -1. ... Ред #: 8; Колона #: -1. След това получавам грешка net.sf.saxon.trans.XPathException: Няма тип с име defiml:DL_CollateralService в импортирана схема   -  person Jimmy    schedule 21.04.2015
comment
Изглежда, че въпросът се е преместил. Установихте, че Apache Camel може да зарежда съобразен със схемата Saxon, решихте проблема с намирането на схемата. Предупрежденията за схемата, включително самата себе си, вероятно могат да бъдат игнорирани; въпреки че фактът, че се казва Module null, е малко по-притеснителен, защото предполага, че основният URI / системен идентификатор на модула на схемата не е известен. Бих направил някои експерименти, за да видя дали кодът работи, когато извадите Apache Camel от уравнението.   -  person Michael Kay    schedule 21.04.2015


Отговори (1)


За изчерпателност нишката за коментари показва, че отговорът на първоначалния ви въпрос е „да“: вие демонстрирахте, че трансформация, съобразена със схемата (използвайки Saxon), може да бъде извикана от среда на Camel.

person Michael Kay    schedule 03.05.2015