2014-08-25 7 views
-1

У меня есть файл XML, в котором имеет некоторые свойства CSS и я хочу, чтобы применить на столекак получить значение переменной из файла XML в XSLT

XML файл выглядит следующим образом: -

<code> 
    <reportConfiguration> 
     <details_background_color>white</details_background_color> 
     <page_header_horizontal_align>center</page_header_horizontal_align> 
     <page_header_font_size>12pt</page_header_font_size> 
    </reportConfiguration> 
    </code> 

Я хочу использовать details_background_color, details_bold применить значения в таблице, код следующим образом, но не работает

<code> 
    <fo:block> 
     <xsl:for-each select="element_1"> 
     <fo:block font-size="document('xmlFile_reportConfig.xml')/reportConfiguration/page_header_font_size" font-weight="document('xmlFile_reportConfig.xml')/reportConfiguration/details_bold" text-align="document('xmlFile_reportConfig.xml')/reportConfiguration/page_header_horizontal_align" vertical-align="middle"> 
          select="document('file:///D:/DATA/Marquee/dial_stats_UK.xml')/UK_Products_Pipeline/LastFinishCode" 
           <xsl:value-of select="."/> 
          </fo:block> 
         </xsl:for-each> 
        </fo:block> 
</code> 
+0

Мы слишком много не видим. В частности, вы ссылаетесь на элементы 'element_1', которые не отображаются во входном XML, который вы указали. В тексте вы указываете 'details_bold', где он? Также, пожалуйста, покажите больше XSLT-кода (весь шаблон или полную таблицу стилей). –

ответ

0

Я предполагаю, что файл XML вы показали нам, не является первичным документом вы применяете XSLT также, но вторичный документ, который вам нужно указать в дополнение к основному, иначе не было бы необходимости использовать функцию document.

(Я также собираюсь принять теги <code>, показывающие в вашем вопросе также не должно быть).

Во всяком случае, это то, как вы в настоящее время пытаются ссылаться на внешний документ

<fo:block 
    font-size="document('xmlFile_reportConfig.xml')/reportConfiguration/page_header_font_size" 

При попытке установить значение атрибута с помощью выражения, вам нужно использовать Attribute Value Templates, в противном случае значение из атрибут будет буквально тем, что вы пишете. Другими словами, вам необходимо заключить выражение в фигурные скобки, чтобы указать, что это выражение, вычисляемое:

<fo:block 
    font-size="{document('xmlFile_reportConfig.xml')/reportConfiguration/page_header_font_size}" 

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

<xsl:variable name="config" select="document('xmlFile_reportConfig.xml')/reportConfiguration" /> 
<fo:block font-size="{$config/page_header_font_size}" font-weight="{$config/details_bold}" /> 

Примечание. Это означает, что ваша конфигурация отчета XML находится в том же каталоге, что и файл XSLT.

+0

спасибо, его работа :) –

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