2013-11-12 6 views
-1
I have a below XML. 
XML- 
<Book> 
<Title>blahblah</Title> 
<Title> 
    <subtitle>bcdf</subtitle> 
    <subtitle>fgdh</subtitle>asdfg 
</Title> 
<Title> 
    <subtitle>bcdf</subtitle>jhuk 
    <subtitle>xyza</subtitle>refsdw 
</Title> 
<Title> 
<subtitle>bcdf</subtitle>fdgfjhdc 
<subtitle>trey</subtitle> 
</Title> 

, как получить значение элемента через XSLT

Я хочу, чтобы получить ниже выхода через XSLT, Может кто-нибудь, пожалуйста, помогите мне, чтобы решить это.

<Title>blahblah</Title> 
<Title subtitle="bcdffgdh">asdfg</Title> 
<Title subtitle="bcdfxyza">jhukrefsdw</Title> 
<Title subtitle="bcdftrey">fdgfjhdc</Title> 
+1

Можно ли использовать XSLT 2.0? –

+0

Ваш вопрос был проголосован, потому что вы вообще не пытаетесь что-либо попробовать. –

+0

Да, вы можете использовать xslt 2.0, но было бы здорово, если бы вы могли предоставить результат в xslt 1.0 – Ankit

ответ

0

Это XSL учитывая ваш вход (конечно, что делает его действительным с концом книгой тегом, а также окружающий выход с тем же тегом ... только один пример из 100 способов сделать то, что вы просили, и может даже не быть правильным, так как в вы пытаетесь вещи, помогает другим, чтобы понять, что вы действительно ищете, и все различные возможности

Вот XSL:.

<xsl:stylesheet xmlns:xsl="http://www.w3.org/1999/XSL/Transform" 
     version="1.0"> 
    <xsl:template match="/"> 
     <book> 
      <xsl:apply-templates/> 
     </book> 
    </xsl:template>  
    <xsl:template match="Title[child::subtitle]"> 
     <Title> 
     <xsl:attribute name="subtitle"> 
      <xsl:for-each select="subtitle"> 
       <xsl:value-of select="text()"/>  
      </xsl:for-each> 
     </xsl:attribute> 
      <xsl:variable name="mixedtext"> 
       <xsl:apply-templates select="descendant::text()[not(parent::subtitle)]"/>  
      </xsl:variable> 
      <xsl:value-of select="translate(normalize-space($mixedtext),' ','')"/> 
     </Title> 
    </xsl:template> 
     <xsl:template match="Title"> 
      <Title> 
       <xsl:value-of select="."/> 
      </Title> 
     </xsl:template> 
    </xsl:stylesheet> 

Вот результат:

<book> 
    <Title>blahblah</Title> 
    <Title subtitle="bcdffgdh">asdfg</Title> 
    <Title subtitle="bcdfxyza">jhukrefsdw</Title> 
    <Title subtitle="bcdftrey">fdgfjhdc</Title> 
</book> 

Точно, как вы просили (и, кстати, не так сложно, как вы заявили в своем комментарии). Взял 2 минуты.

+0

отлично, спасибо много kevin, я искал «" – Ankit

+0

Или просто используйте

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