2014-09-24 4 views
-1

У меня есть переменная, содержащая значение XML в качественовообращенным и к & в XSLT

<xsl:variable name="resp"> 
<TABLE> 
<news_id>39</news_id> 
<news_title>Strada &#8211; TSO</news_title> 
<news_content>Extending the support to IFA&#8217;s family in form of income security by paying last drawn trail paid to IFA before the demise.</news_content> 
<news_type>1</news_type> 
<doc_url>upload/docs/12345.pdf</doc_url> 
<doc_size>185859</doc_size> 
<news_date>2014-09-19 12:54:11.0</news_date> 
<is_enabled>1</is_enabled> 
</TABLE> 
<xsl:variable> 

Как разобрать значения этой переменной. Пожалуйста помоги.

+0

Не могли бы вы продумать, какого результата вы хотите достичь? –

+0

Можете ли вы использовать XSLT 2.0 или ограничены 1.0, а если последний, какой XSLT-процессор вы используете? –

+0

Вы почти наверняка не * ХОТИТЕ * конвертировать & в &. Обычный синтаксический анализ XML преобразует числовые символьные ссылки в этой строке в соответствующие символы Юникода; нормальная сериализация XML преобразует эти символы обратно в их числовые символьные ссылки. – keshlam

ответ

0

I вы должны иметь структуру, вы делаете это:

<?xml version="1.0" encoding="UTF-8"?> 
<xsl:stylesheet xmlns:xsl="http://www.w3.org/1999/XSL/Transform" 
    xmlns:xs="http://www.w3.org/2001/XMLSchema" 
    exclude-result-prefixes="xs" 
    version="1.0"> 
    <xsl:output indent="yes"/> 
    <xsl:template match="/"> 
     <xsl:variable name="resp"> 
      <TABLE> 
       <news_id>39</news_id> 
       <news_title>Strada &#8211; TSO</news_title> 
       <news_content>Extending the support to IFA&#8217;s family in form of income security by paying last drawn trail paid to IFA before the demise.</news_content> 
       <news_type>1</news_type> 
       <doc_url>upload/docs/12345.pdf</doc_url> 
       <doc_size>185859</doc_size> 
       <news_date>2014-09-19 12:54:11.0</news_date> 
       <is_enabled>1</is_enabled> 
      </TABLE> 
     </xsl:variable> 

     <!-- using copy-of to get the structure of the XML --> 
     <xsl:copy-of select="$resp" /> 
    </xsl:template> 
</xsl:stylesheet> 

Если вы хотите, чтобы текст внутри переменной, вы делаете это:

<?xml version="1.0" encoding="UTF-8"?> 
<xsl:stylesheet xmlns:xsl="http://www.w3.org/1999/XSL/Transform" 
    xmlns:xs="http://www.w3.org/2001/XMLSchema" 
    exclude-result-prefixes="xs" 
    version="1.0"> 
    <xsl:output indent="yes"/> 
    <xsl:template match="/"> 
     <xsl:variable name="resp"> 
      <TABLE> 
       <news_id>39</news_id> 
       <news_title>Strada &#8211; TSO</news_title> 
       <news_content>Extending the support to IFA&#8217;s family in form of income security by paying last drawn trail paid to IFA before the demise.</news_content> 
       <news_type>1</news_type> 
       <doc_url>upload/docs/12345.pdf</doc_url> 
       <doc_size>185859</doc_size> 
       <news_date>2014-09-19 12:54:11.0</news_date> 
       <is_enabled>1</is_enabled> 
      </TABLE> 
     </xsl:variable> 
     <variable> 
     <!-- using value-of to get the values of the XML inserting it into variable element --> 
      <xsl:value-of select="$resp"/> 
     </variable> 


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

Если вы хотите, чтобы получить разные значения из элементов внутри переменной вы делаете это:

<?xml version="1.0" encoding="UTF-8"?> 
<xsl:stylesheet xmlns:xsl="http://www.w3.org/1999/XSL/Transform" 
    xmlns:xs="http://www.w3.org/2001/XMLSchema" 
    exclude-result-prefixes="xs" 
    version="1.0"> 
    <xsl:output indent="yes"/> 
    <xsl:template match="/"> 
     <xsl:variable name="resp"> 
      <TABLE> 
       <news_id>39</news_id> 
       <news_title>Strada &#8211; TSO</news_title> 
       <news_content>Extending the support to IFA&#8217;s family in form of income security by paying last drawn trail paid to IFA before the demise.</news_content> 
       <news_type>1</news_type> 
       <doc_url>upload/docs/12345.pdf</doc_url> 
       <doc_size>185859</doc_size> 
       <news_date>2014-09-19 12:54:11.0</news_date> 
       <is_enabled>1</is_enabled> 
      </TABLE> 
     </xsl:variable> 

     <!-- If you want to get the value of news_id inside the variable you do this --> 
     <newsId> 
      <xsl:value-of select="$resp/TABLE/news_id"/> 
     </newsId> 

     <!-- Below is a shorter xpath-syntax --> 
     <newsTitle> 
      <xsl:value-of select="$resp//news_title"/> 
     </newsTitle> 

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

Надеюсь, что это поможет.

+0

Обратите внимание, что переход в переменную '$ resp' с путями типа' $ resp/TABLE/news_id' будет работать только в процессоре XSLT 2.0. Для XSLT 1.0 вам необходимо использовать функцию расширения, такую ​​как 'exslt: node-set', чтобы превратить фрагмент результирующего дерева в переменную в правильный набор узлов. –

+0

& Trond: это было быстро. Спасибо. Мне нужно ориентироваться в XSLT 1.0. – nam

+0

Но получаете ли вы XML как переменную, то есть вы получаете XSLT-файл или сохраняете всю структуру как переменную? Что вы используете для запуска XSLT? Язык - тиски. – Trond

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