Как я могу удалить пустой атрибут xmlns из ответного сообщения сторонней бизнес-службы - PullRequest
0 голосов
/ 09 апреля 2020

У меня есть сторонний сервис. Пустое значение xmlns возвращается в одном из элементов этой службы

Вот ответ бизнес-службы

enter image description here

Как видите Элемент IthalatBeyannameler содержит пустое значение xmlns = "", поэтому преобразование xslt не работает.

Вот мой xslt

 <xsl:template match="/">
  <tns:KalemMarkaList>
     <xsl:for-each select="/ns0:AntrepoCikisDigerResponse/ns0:AntrepoCikisDigerResult/ns0:IthalatBeyannameler/ns0:IthalatBeyanname">
        <tns:KalemMarka>
           <tns:Sasi/>
           <tns:MaviRef>
              <xsl:value-of select="ns0:MaviRef"/>
           </tns:MaviRef>
           <tns:MusteriIsNo>
              <xsl:value-of select="ns0:MusteriIsNo"/>
           </tns:MusteriIsNo>
           <tns:Yil>
              <xsl:value-of select="ns0:Yil"/>
           </tns:Yil>
        </tns:KalemMarka>
     </xsl:for-each>
  </tns:KalemMarkaList>

как я могу решить эту проблему.

Ответы [ 2 ]

0 голосов
/ 09 апреля 2020

Как видите, элемент IthalatBeyannameler имеет пустой xmlns = "", поэтому преобразование xslt не работает.

Нет. Ваше преобразование не работает, потому что вы игнорируете это. Вы пытаетесь выбрать:

<xsl:for-each select="/ns0:AntrepoCikisDigerResponse/ns0:AntrepoCikisDigerResult/ns0:IthalatBeyannameler/ns0:IthalatBeyanname">

, когда вам нужно сделать:

<xsl:for-each select="/ns0:AntrepoCikisDigerResponse/ns0:AntrepoCikisDigerResult/IthalatBeyannameler/IthalatBeyanname">

, то есть удалить префикс ns0 при адресации элементов, которые находятся в пространстве без имен из-за отсутствия объявление пространства имен.

По той же причине вам необходимо изменить:

<xsl:value-of select="ns0:MaviRef"/>

на:

<xsl:value-of select="MaviRef"/>

и аналогично для двух других xsl:value-of инструкций.

0 голосов
/ 09 апреля 2020

Если элемент IthalatBeyannamele (и его потомки) должен находиться в пространстве имен http://tempuri.org/, то вам нужно исправить [или убедить поставщика исправить] код, который помещает их в нуль Пространство имен. (Существует ли спецификация XML, возвращаемая этим API, и если да, что он говорит?)

С другой стороны, если элементы должны находиться в пространстве имен NULL, тогда вам нужно чтобы исправить вашу таблицу стилей для обработки их в этом пространстве имен.

Обратите внимание, что ваша проблема не в объявлении пространства (un-), а в том, что элементы находятся в неправильном пространстве имен.

...