У нас есть инструмент, который создает нежелательный элемент XML, и мы используем XSLT для перевода его в требуемый формат.Generic XSLT transform для управления подобными данными XML
Мы пишем другой XSLT для каждого XML, сгенерированного файлом. например один для XML-клиентов, один для XML-документов заказов и т. д.
Ниже приведены несколько файлов данных XML, полученных с помощью инструмента и фактического выпуска продукции ожидается
Клиенты
Tool сгенерированных XML
<Message>
<Data>
<CustomerArray>
<Customer>
<X>
<Name>John</Name>
<Id>100</Id>
<Roles>
<Role>
<X>Manager</X>
<X>Architect</X>
</Role>
</Roles>
</X>
<X>
<Name>Doe</Name>
<Id>102</Id>
<Roles>
<Role>
<X>Supervisor</X>
<X>Admin</X>
</Role>
</Roles>
</X>
</Customer>
</CustomerArray>
</Data>
</Message>
Необходимые данные XML
<Message>
<Data>
<CustomerArray>
<Customer>
<Name>John</Name>
<Id>100</Id>
<Roles>
<Role>Manager</Role>
<Role>Architect</Role>
</Roles>
</Customer>
<Customer>
<Name>Doe</Name>
<Id>102</Id>
<Roles>
<Role>Supervisor</Role>
<Role>Admin</Role>
</Roles>
</Customer>
</CustomerArray>
</Data>
</Message>
Заказы
Инструмент сгенерированных XML
<Message>
<Orders>
<Order>
<X>
<OrderNumber>O123</OrderNumber>
<CustomerID>C100</CustomerID>
<Quantity>100</Quantity>
<UnitPrice>10.0</UnitPrice>
</X>
<X>
<OrderNumber>O456</OrderNumber>
<CustomerID>C107</CustomerID>
<Quantity>100</Quantity>
<UnitPrice>5.0</UnitPrice>
</X>
</Order>
</Orders>
</Message>
Необходимые данные XML
<Message>
<Orders>
<Order>
<OrderNumber>O123</OrderNumber>
<CustomerID>C100</CustomerID>
<Quantity>100</Quantity>
<UnitPrice>10.0</UnitPrice>
</Order>
<Order>
<OrderNumber>O456</OrderNumber>
<CustomerID>C107</CustomerID>
<Quantity>100</Quantity>
<UnitPrice>5.0</UnitPrice>
</Order>
</Orders>
</Message>
Нежелательный элемент X
может прийти на любом уровне.
Можно ли написать обобщенное преобразование XSLT для достижения этого результата во всем XML-вводе? Например, если найдено X
, замените его родительским тегом и затем удалите родительский тег.
Спасибо Димитрию! Это решило мою проблему. –
@WDAY, добро пожаловать. –