У меня есть следующий XML-документ в качестве вклада (InputXML) к программе Java, которая применяет XSL (TransformationXSL) для преобразования вывода XML (OutputXML).Как преобразовать XML, добавляющий дочерний узел с помощью XSLT?
Я хочу добавить дополнительный узел как часть преобразования входного XML. Есть ли лучший способ, чем то, что показано в (TranformationXSL), так как это просто пытается сопоставить элемент и скопировать то, что требуется ??? Любой другой эффективный способ/предложение очень ценится.
InputXML
<?xml version="1.0" encoding="UTF-8"?>
<tuple>
<old>
<Customers>
<OrderID>10248</OrderID>
<CustomerID>VINET</CustomerID>
<EmployeeID>8</EmployeeID>
<OrderDate>1996-07-04T00:00:00.0</OrderDate>
<CustomerID>VINET</CustomerID>
<CompanyName>Vins et alcools Chevalier</CompanyName>
</Customers>
</old>
</tuple>
OutputXML
<?xml version="1.0" encoding="UTF-8"?>
<tuple>
<old>
<Customers>
<Orders>
<OrderID>10248</OrderID>
<CustomerID>VINET</CustomerID>
<EmployeeID>8</EmployeeID>
<OrderDate>1996-07-04T00:00:00.0</OrderDate>
</Orders>
<CustomerID>VINET</CustomerID>
<CompanyName>Vins et alcools Chevalier</CompanyName>
</Customers>
</old>
</tuple>
Это TransformationXSL, что я говорил. Можно ли это изменить, чтобы эффективно преобразовать входной XML, чтобы дать желаемый выходной XML ???
<?xml version="1.0" encoding="UTF-8"?>
<xsl:stylesheet version="1.0"
xmlns:xsl="http://www.w3.org/1999/XSL/Transform">
<xsl:output method="xml" omit-xml-declaration="no" indent="yes" />
<xsl:strip-space elements="*" />
<xsl:template match="node()|@*">
<xsl:copy>
<xsl:apply-templates select="node()|@*" />
</xsl:copy>
</xsl:template>
<xsl:template match="Customers">
<Customers>
<Orders>
<OrderID>10248</OrderID>
<CustomerID>VINET</CustomerID>
<EmployeeID>8</EmployeeID>
<OrderDate>1996-07-04T00:00:00.0</OrderDate>
</Orders>
<CustomerID>VINET</CustomerID>
<CompanyName>Vins et alcools Chevalier</CompanyName>
</Customers>
</xsl:template>
</xsl:stylesheet>
Что логика группирования нескольких элементов внутри 'Orders' и мало кто нет? –
Логический дифференциатор - это то, что столбцы из таблицы Orders (база данных NORTHWIND, MS SQL Server) помещаются под тегом Заказы, остальные элементы - столбцы из таблицы Customers. –
Ваш XSLT не имеет для меня никакого смысла: почему вы жестко кодируете значения? - Что касается вопроса: всегда будет только одна запись, содержащая один заказ и один клиент? –