2016-01-15 3 views
0

У меня есть для каждого цикла в моем файле xslt, который будет обрабатывать несколько процессов, если какое-либо из условий имеет соответствующий сценарий, чем я хочу выйти из цикла и дать первое значение (которое удовлетворило условие) для моего вывода.Как избежать дубликатов, генерируемых из XSLT

Вот мой файл XML

 <Product> 
    <ContactDetails> 
    <addressdetail> 
    <Street>Stack</Street> 
    <HouseNumber>123</HouseNumber> 
    </addressdetail> 
    <addressdetail> 
    <Street>Stack</Street> 
    <HouseNumber>123456</HouseNumber> 
    </addressdetail> 
    <addressdetail> 
    <Street>Stack</Street> 
    <HouseNumber>456</HouseNumber> 
    </addressdetail> 
    </ContactDetails> 
    </Product> 

и в моем файле XSL я некоторые KINDING как этот

<?xml version="1.0" encoding="UTF-8"?> 
    <xsl:stylesheet xmlns:xsl="http://www.w3.org/1999/XSL/Transform"     version="2.0" xmlns:fo="http://www.w3.org/1999/XSL/Format"     xmlns:saxon="http://saxon.sf.net/" extension-element-prefixes="saxon"> 
<xsl:output method="xml" version="1.0" encoding="UTF-8" indent="yes"/> 

<xsl:template match="/">  
     <p1:product_req> 
     <p2:Contactdetails_Req> 
     <xsl:for-each select ="Product[ContactDetails= 'addressdetails'] "> 
      <xsl:if test="Street='Stack'" > 
      <p3:SC>abc</p3:SC> 
      </xsl:if> 
     </xsl:for-each> 
     </p2:Contactdetails_Req> 
    </p1:product_req> 

</xsl:template> 
</xsl:stylesheet>  

После преобразования, я имею три значения на моем выходе XML

  <p1:Product_Req> 
      <p2:ContactDetails_Req> 
      <p3:ac>abc</p3:ac> 
      <p3:ac>abc</p3:ac> 
      <p3:ac>abc</p3:ac> 
      </p1:Product_Req> 
      </p2:ContactDetails_Req> 

Но мне не нужны значения отталкивания на моем выходе xml, мне нужно только одно значение на моем узле Xml ac. Я попытался с помощью тождественного преобразования, но ничего не кажется, работает, любая помощь высоко ценится

<p1:Product_Req> 
<p2:ContactDetails_Req>  
<p3:ac>abc</p3:ac> 
</p1:Product_Req> 
</p2:ContactDetails_Req> 

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

+0

Пожалуйста, разместите воспроизводимый пример. Ваш код делает ** ** ** не предоставляет вывод, который вы требуете. –

ответ

1

Ваш вопрос непонятен. Если, как кажется, вы хотите проверить, имеет ли хотя бы один адрес (во всем XML) данную улицу, вы можете сделать просто:

<xsl:template match="/"> 
    <xsl:if test="Product/ContactDetails/addressdetail/Street='Stack'" > 
      <!-- whatever you want to output goes here --> 
    </xsl:if> 
</xsl:template> 
+0

Привет, Майкл, я ценю вашу помощь. Я все еще получаю несколько значений на моем узле xml. Можете ли вы указать, что я могу избежать нескольких значений из моего преобразования, мне нужно запустить цикл на контактной информации, для каждой детали адреса, пока я не получу условие соответствия, присвойте значение и выйти из цикла, если он удовлетворит мой conditon –

+1

@JordanBelfort Боюсь, я не понимаю, что вы говорите. Я предлагаю вам отредактировать свой вопрос и уточнить больше - и особенно. опубликовать ожидаемый результат. –

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