Проблема заключается в следующем, нам нужно преобразовать XML-файлы, наш клиент отправляет нам 4 разных файла, каждый из которых имеет свое имя, и каждый файл имеет уникальное пространство имен, однако элементы в документе одинаковы.
Файлы названы;Supplier_Invoices_1, Supplier_Invoices_2, Supplier_Invoices_3 и т. Д. Без расширения, но они представляют собой XML.
Пространство имен для для Supplier_Invoices_2:
xmlns:wd="urn:com.cust.report/Supplier_Invoices_2"
Для Invoice_1:
"urn:com.cust.report/Supplier_Invoices_1"
Invoice_3
1012 * и др.1022 *
<?xml version="1.0" encoding="UTF-8"?>
<message xmlns:wd="urn:com.cust.report/Supplier_Invoices_2">
<data>
<Documents>
<row>
<path>Supplier_Invoices_2</path>
<CardCode>S-00000461</CardCode>
</row>
</Documents>
<Document_Lines>
<row>
<Price>1956.92</Price>
</row>
</Document_Lines>
</data>
</message>
Мой вопрос, как я могу установить пространство имен в моем документе XSL в качестве переменной для документа, который он обрабатывает?
Я добавил xsl: param в свой XSL.Верхние 5 строчек документа выглядят так:
<xsl:stylesheet version="2.0" xmlns:xsl="http://www.w3.org/1999/XSL/Transform" xmlns:wd="urn:com.cust.report/$npath" >
<xsl:output method="xml" encoding="UTF-8" indent="yes"/>
<xsl:template match="/">
<xsl:param name="XSLPath" select="base-uri()"/>
<xsl:param name="npath" select="tokenize($XSLPath,'/')[last()]" />
Вывод:
<?xml version="1.0" encoding="UTF-8"?>
<message xmlns:wd="urn:com.cust.report/$npath">
<data/>
</message>
Любая помощь будет принята с благодарностью.