2014-09-15 1 views
1

Ниже приведен ответ для веб-службы.Нужно искать узел. если нет, необходимо ввести пустой узел, используя xslt

<Envelope> 
     <Body> 
     <searchItemResponse> 
      <status> 
      <statusCode>Success</statusCode> 
      </status> 
      <itemList> 
      <itemWithWarehouses> 
       <item> 
       <originOfData>SME</originOfData> 
       <itemNumbers> 
        <shortNumber>115632</shortNumber> 
        <tssArticleNumber>PT0401450-T46N</tssArticleNumber> 
        <relatedItems> 
         <alternateItemsNumber>ORAR00428-N7083</alternateItemsNumber> 
        </relatedItems> 
       </item> 
       <warehouseItems> 
        ..................... 
       </warehouseItems> 
       <warehouseItems> 
        ..................... 
       </warehouseItems> 
      </itemWithWarehouses> 
      </itemList> 
     </searchItemResponse> 
     </Body> 
    </Envelope> 

В некоторых случаях отсутствует узел ниже.

<relatedItems> 
    <alternateItemsNumber>ORAR00428-N7083</alternateItemsNumber> 
</relatedItems> 

мне нужно, чтобы убедиться, если узел не существует, мне нужно, чтобы вставить узел, как показано ниже

<relatedItems> 
    <alternateItemsNumber/> 
</relatedItems> 

Мне нужен XSLT для этого. Пожалуйста, помогите мне. Благодаря

+0

является то, что все ** ** таблицы стилей XSLT должен сделать? –

+0

Я был бы склонен подвергать сомнению, почему вам нужно ... нет смысла добавлять элемент для данных, которых там нет. Разумеется, все, что обрабатывает xml, должно быть адаптировано для изящного управления отсутствием элемента? – Flynn1179

ответ

0

Вы можете использовать шаблон ищет любой itemNumbers не имеющий relatedItems элемент, а затем добавить пустые элементы:

<xsl:stylesheet xmlns:xsl="http://www.w3.org/1999/XSL/Transform" xmlns:soapenv="http://schemas.xmlsoap.org/soap/envelope/" xmlns:xs="http://www.w3.org/2001/XMLSchema" xmlns="" version="2.0" xpath-default-namespace="" exclude-result-prefixes="#all"> 
    <xsl:output method="xml" encoding="utf-8" indent="yes"/> 

    <xsl:template match="itemNumbers[not(relatedItems)]"> 
     <xsl:copy> 
      <xsl:apply-templates select="*"/> 
      <xsl:element name="relatedItems"> 
       <xsl:element name="alternateItemsNumber"/> 
      </xsl:element> 
     </xsl:copy> 
    </xsl:template> 

    <xsl:template match="@*|node()"> 
     <xsl:copy> 
      <xsl:apply-templates select="@*|node()" /> 
     </xsl:copy> 
    </xsl:template>  

</xsl:stylesheet> 
+0

Работает отлично. благодаря –

Смежные вопросы