Привет. Я пытаюсь преобразовать XML в другой XML, используя xsl.Преобразование XSL работает нормально при тестировании в Oxygen Developer и VM.
Но все же я получаю предупреждение типа "Недопустимое значение, используемое для имени атрибута" в строках № 20 и 23.
XSL, который я использовал:
<?xml version="1.0" encoding="UTF-8"?>
<xsl:stylesheet xmlns:xsl="http://www.w3.org/1999/XSL/Transform"
xmlns:cl="http://tyryt.com/abc/abc_order"
xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns:java="http://xml.apache.org/xslt/java"
exclude-result-prefixes="cl xsd java" version="1.0">
<xsl:output indent="yes" method="xml" encoding="UTF-8" omit-xml-declaration="no"/>
<xsl:template name="generateInsightsHeader">
<xsl:for-each select="/">
<xsl:element name="pon">
<xsl:value-of select="*/cl:HDR/cl:PON"/>
</xsl:element>
<xsl:element name="version">
<xsl:value-of select="*/cl:HDR/cl:VER"/>
</xsl:element>
</xsl:for-each>
</xsl:template>
<xsl:template name="copyWholeXml" match="*">
<xsl:if test="local-name() != 'brmserrorxml'">
<xsl:element name="{local-name()}">
<xsl:for-each select="@*">
<xsl:if test="../@protocoltype != ''">
<xsl:attribute name="{local-name()}">
<xsl:value-of select="."/>
</xsl:attribute>
</xsl:if>
</xsl:for-each>
<xsl:apply-templates/>
</xsl:element>
</xsl:if>
</xsl:template>
<xsl:template match="/">
<IntermediateXml xmlns:json="http://json.org/">
<xsl:choose>
<xsl:when test="cl:SAMPLE_ORDER">
<xsl:call-template name="generateInsightsHeader"/>
<xsl:call-template name="copyWholeXml"/>
</xsl:when>
</xsl:choose>
</IntermediateXml>
</xsl:template>
</xsl:stylesheet>
и образец XML, который я использовал:
<?xml version="1.0"?>
<SAMPLE_ORDER class="1" index="0" xmlns="http://tyryt.com/abc/abc_order" service="SAMPLE_ORDER">
<header>
<interfaceid>INTERFACE_REQUIRED</interfaceid>
<actionrequired>Transmit</actionrequired>
</header>
<HDR>
<MESSAGE_ID>229364ASE</MESSAGE_ID>
<DATE>2017-09-04T12:29:11+05:30</DATE>
<PON>229364ASE10</PON>
<VER>01</VER>
</HDR>
<LOCAL_MESSAGE>
<LOCAL_ADMIN>
<LOCQTY>111</LOCQTY>
<AN>JHGKJ679868</AN>
<CC>005F</CC>
<AUTHORIZATION>
<DDD>20171228</DDD>
<ACTL>01234567899</ACTL>
</AUTHORIZATION>
</LOCAL_ADMIN>
<LSR_BILL>
<ACNA>WEE</ACNA>
</LSR_BILL>
<CONTACT>
<INIT>ASDDFAD</INIT>
<INIT_TEL_NO>2543654576</INIT_TEL_NO>
<INIT_EMAIL>abc@gmail.com</INIT_EMAIL>
</CONTACT>
</LOCAL_MESSAGE>
<LS>
<LS_SVC_DET>
<SVC_DET_GRP>
<LOCNUM>145</LOCNUM>
<LNUM>78945</LNUM>
<LNA>D</LNA>
<ECCKT>98698KJGKUJGUKJH</ECCKT>
</SVC_DET_GRP>
</LS_SVC_DET>
</LS>
</SAMPLE_ORDER>
Для трансформации я использую банку Xalan.
Пожалуйста, помогитемне решить эту проблему.Заранее спасибо