2013-10-04 4 views
0

У меня есть xml.in этот XML У меня есть узел с именем видео, как показано нижеПолучить атрибут из XML с помощью XSLT

<product> 
<id>676872</id> 
    <weightingram>510</weightingram> 
    <volume>0</volume> 
    <discountgroup /> 
<name>Product name (500 g)</name> 
    <vat>10,49</vat> 
    <webbestprice extra="webbestprice">0</webbestprice> 
    <webreturn extra="webreturn">0</webreturn> 
    <weboutdate extra="weboutdate">01-01-2013 00:00:00</weboutdate> 
    <webaltitem extra="webaltitem" /> 
    <filters extra="filters"> 
    <ISP_WebItem FILTER="Type" FILTERNAME="type" UNITCODE=""/> 
    <ISP_WebItem FILTER="Type2" FILTERNAME="500" UNITCODE="g"/> 
    </filters> 
    <videos extra="videos"> 
    <YoutubeVideoURL RowNumber="33" ProductID="676872" YoutubeUrl="http://www.youtube.com/watch?v=EjoEIHVk9qM" YoutubeImage="https://img.youtube.com/vi/EjoEIHVk9qM/2.jpg"/> 
    </videos> 
</product> 

выше XML получает с помощью

<textarea> 
<xsl:copy-of select="."/> 
</textarea> 

мне нужно получить значение атрибута YoutubeUrl из этого xml.I пытался что-то вроде

<xsl:value-of select="./videos/YoutubeVideoURL[@YoutubeUrl] "/> 

но это не working.Thanks заранее за помощь.

+0

Вам нужно показать больше контекста в вашем XSL, нельзя предположить, в каком контексте вы выполняете xsl: value-of и, следовательно, даже не можете догадаться, в чем проблема. Показать весь шаблон. –

+0

Я согласен с @KevinBrown, что вам нужно предоставить рабочий XML-контент, чтобы другие могли получить представление. – NullPointer

+0

@Matthew Green введите – Arun

ответ

1

Попробуйте этот код

<xsl:template match="YoutubeVideoURL"> 
    <xsl:value-of select="@YoutubeUrl"/> 
</xsl:template> 

(или)

если вы указали шаблон, соответствующий к «/» корень, то используйте ниже синтаксис.

<xsl:template match="/"> 

..... 
    <textarea> 
     <xsl:copy-of select="." /> 
    </textarea> 
    <p> 
    <xsl:value-of select="//videos//YoutubeVideoURL//@YoutubeUrl"/> 
    </p> 
</xsl:template> 

Copy-of будет копировать элемент xml, указанный в выражении select. Таким образом, TextArea будет иметь этот элемент xml со своей структурой. И вы используете ценность для извлечения атрибута xml, который требует выбора элемента. Итак, это не связано.

Вы можете использовать любое из решений, упомянутых в этом документе.

+0

Я попробовал второй, но не работал. Arun

+0

вы можете попробовать без" ./ "? Начните с видео. И вы пробовали первый? – Viji

+0

Arun

1

Вы можете написать как этот

Ваш образец файла XML

<?xml version="1.0" encoding="UTF-8"?> 
<videos extra="videos"> 
    <YoutubeVideoURL RowNumber="1" ProductID="12452" YoutubeUrl="http://www.youtube.com/watch?v=efhrtgdbo" YoutubeImage="https://img.youtube.com/vi/efhrtgdbo/2.jpg"/> 
</videos> 

И ваш файл XSL образца

<?xml version="1.0" encoding="UTF-8"?> 
<xsl:stylesheet version="1.0" xmlns:xsl="http://www.w3.org/1999/XSL/Transform"> 
    <xsl:output method="xml"/> 
    <xsl:template match="YoutubeVideoURL"> 
     <xsl:value-of select="@YoutubeUrl"/> 
    </xsl:template> 
</xsl:stylesheet> 

Окончательный выходной

http://www.youtube.com/watch?v=efhrtgdbo

Вот это

+0

Но у меня есть xslt, в этом xslt здесь я получаю образец xml, как указано в вопросе. Мне нужно получить Значение YoutubeUrl. Arun

+0

Но вы предоставили только '' xml. Поэтому, основываясь на вашем примере, я могу только предоставить этот ответ. Вы должны показать свой wo rking XML. – NullPointer

+0

Это правильно .. Я сказал, что не могу называть внутри Arun

0

В вашей ценности, от вы ищете какой-либо videos/YoutubeVideoURL, которые имеют атрибут @YoutubeUrl. Если вы хотите получить значение из @YoutubeUrl, тогда вам нужно взять его из предиката так.

<xsl:value-of select="./videos/YoutubeVideoURL/@YoutubeUrl" /> 

Это, конечно, предполагает, что ваши пути и шаблоны уже настроены правильно, чтобы найти это значение в его текущей позиции.

+0

Да Когда i Test << xsl: value-of select =" ./ videos> он получит результат .. , но Trying он не дает никакого результата? В чем проблема? – Arun

+0

@Arun I don ' не знаю, в чем проблема, если вы не предоставляете больше своих XML и XSL. Когда я беру то, что вы показали для XML и преобразовать его с помощью моего XSL, который ищет указанное мной значение. Я получаю URL-адрес. Является ли XML, который вы показали в фактическом XML, а не фрагменте дерева результатов? –

+0

да Я отредактировал вопрос, пожалуйста, найдите. Xml получает время Arun

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