Удаление нескольких узлов XML с использованием XSLT - PullRequest
0 голосов
/ 09 мая 2019

Я пытаюсь удалить 2 корневых узла из файла XML, и я не могу понять, что это правильно. Я пытался удалить первую часть, но безрезультатно.

Я ожидаю, что файл будет таким:

 [{                
    "PartNumber" : "000096",
    "Location" : "A000",
    "Description" : "TEST OF RAMIS",
    "UnitOfMeasure" : "EA",
    "PartType" : "1",
    "FixedLeadTime" : "1",
    "MaterialType" : "Filling & Mixing Eq"
},{

    "PartNumber" : "000096",
    "Location" : "A000",
    "Description" : "TEST OF RAMIS",
    "UnitOfMeasure" : "EA",
    "PartType" : "1",
    "FixedLeadTime" : "1",
    "MaterialType" : "Filling & Mixing Eq"
}]

Но это так:

 {        
    "ns1:ZZMRP_Parts" : { "Part" :[{

    "PartNumber" : "000096",
    "Location" : "A000",
    "Description" : "TEST OF RAMIS",
    "UnitOfMeasure" : "EA",
    "PartType" : "1",
    "FixedLeadTime" : "1",
    "MaterialType" : "Filling & Mixing Eq"
},{

    "PartNumber" : "000096",
    "Location" : "A000",
    "Description" : "TEST OF RAMIS",
    "UnitOfMeasure" : "EA",
    "PartType" : "1",
    "FixedLeadTime" : "1",
    "MaterialType" : "Filling & Mixing Eq"
}] }}

Мне нужна удаленная часть "ns1:ZZMRP_Parts" : { "Part" :[{.

Из комментариев: Пример ввода

<ns1:DDMRP_Parts xmlns:ns1="urn:za.xxxxxxxx.com:supplychain:3rdp:transdata">
  <Part>
    <PartNumber>000096</PartNumber>
    <Location>A000</Location>
    <Description>TEST OF RAMIS</Description>
    <UnitOfMeasure>EA</UnitOfMeasure>
    <PartType>1</PartType>
    <FixedLeadTime>1</FixedLeadTime>
    <MaterialType>Filling &amp; Mixing Eq</MaterialType>
  </Part>
  <Part>
    <PartNumber>000096</PartNumber>
    <Location>A000</Location>
    <Description>TEST OF RAMIS</Description>
    <UnitOfMeasure>EA</UnitOfMeasure>
    <PartType>1</PartType>
    <FixedLeadTime>1</FixedLeadTime>
    <MaterialType>Filling &amp; Mixing Eq</MaterialType>
  </Part>
</ns1:DDMRP_Parts>

1 Ответ

0 голосов
/ 09 мая 2019

XSLT 3 может обрабатывать JSON, а в XPath 3.1 вы можете легко выбрать только ту часть, которая вас интересует, из более сложного входного JSON, который у вас есть:

<?xml version="1.0" encoding="UTF-8"?>
<xsl:stylesheet xmlns:xsl="http://www.w3.org/1999/XSL/Transform"
    xmlns:xs="http://www.w3.org/2001/XMLSchema"
    exclude-result-prefixes="#all"
    version="3.0">

    <xsl:output method="json" indent="yes"/>

    <xsl:template match="json">
        <xsl:sequence select="parse-json(.)('ns1:ZZMRP_Parts')?Part"/>
    </xsl:template>

</xsl:stylesheet>

Предполагается ввод как

<?xml version="1.0" encoding="UTF-8"?>
<json><![CDATA[
{        
    "ns1:ZZMRP_Parts" : { "Part" :[{

    "PartNumber" : "000096",
    "Location" : "A000",
    "Description" : "TEST OF RAMIS",
    "UnitOfMeasure" : "EA",
    "PartType" : "1",
    "FixedLeadTime" : "1",
    "MaterialType" : "Filling & Mixing Eq"
},{

    "PartNumber" : "000096",
    "Location" : "A000",
    "Description" : "TEST OF RAMIS",
    "UnitOfMeasure" : "EA",
    "PartType" : "1",
    "FixedLeadTime" : "1",
    "MaterialType" : "Filling & Mixing Eq"
}] }}
]]></json>

https://xsltfiddle.liberty -development.net / bFN1y9B

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...