Динамически передавать href в файл XML - PullRequest
0 голосов
/ 11 августа 2010

Как я могу динамически указать значение href в строке

<?xml-stylesheet type="text/xsl" href="first.xsl"?>

в XML?

Я бы хотел динамически подставить "first.xsl".

Спасибо за вашу помощь. ================== Извиняюсь за то, что все испортил / затруднил вашу помощь

Мой XML:

<?xml version="1.0" encoding="utf-8"?>
<?xml-stylesheet type="text/xsl" href="first.xsl"?>
<WinData records="1" fields="4">
<record id="1">
    <Name type="82">January</Name>
    <Dept type="323">19</Dept>
    <InceptionDate type="82">01/01/2010</InceptionDate>
    <Salary type="645">3729.71</Salary>
</record>
<!-- Created from D:\AJAY\C#\VS2010\SBWA\XML -->
</WinData>

XSL:

<?xml version="1.0" encoding="ISO-8859-1"?>
<!-- Edited by XMLSpy® -->
<xsl:stylesheet version="1.0" xmlns:xsl="http://www.w3.org/1999/XSL/Transform">

<xsl:template match="/">
  <html>
  <body>
  <h2>Sub Selection of Data</h2>
    <table border="0">
      <tr bgcolor="#9acd32">
        <th>Name</th>
        <th>Dept</th>
        <th>InceptionDate</th>
        <th>Salary</th>
      </tr>
      <xsl:for-each select="WinData/record" >
      <xsl:sort select="./Name"/>
      <xsl:sort select="./Dept"/>
      <xsl:if test="Salary>100"> 
      <tr>
        <td><xsl:value-of select="Name"/></td>
        <td><xsl:value-of select="Dept"/></td>
        <td><xsl:value-of select="InceptionDate"/></td>
        <td><xsl:value-of select="Salary"/></td>
      </tr>
      </xsl:if>   
      </xsl:for-each>
    </table>
  </body>
  </html>
</xsl:template>
</xsl:stylesheet>

Мои конкретные вопросы / цели:

  1. Как включить фрагмент кода, предлагаемый iHeartGreek?
  2. Есть ли способ передать xsl 'replace' (newLink.xsl в фрагменте) в качестве параметра?

Ответы [ 2 ]

1 голос
/ 11 августа 2010

Два возможных решения.

1) Двухпроходное преобразование.Вы можете вывести PI следующим образом:

<xsl:processing-instruction name="xml-stylesheet">
    <xsl:value-of select="concat('type=&quot;text/xsl&quot; href=&quot;',
                                 $whatever,
                                 '&quot;')"/>
</xsl:processing-instruction>

2) Использовать шаблон "население" (или "заполнить пробелы", как вызовы Димитра) и URI метаданных, чтобы получить макет с fn:document(),Посмотрите это Динамически определите, какую таблицу стилей XSL использовать

Примечание : PI является частью дерева ввода.Независимо от того, является ли это дерево ввода анализируемым документом или созданным с помощью DOM API или любым другим способом, для процессора XSLT существует только «статический» узел типа «PI» со «конечным» строковым значением.

0 голосов
/ 11 августа 2010

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

Использование: (скажем, узел называется "ссылка")

<xsl:template match="link[.='first.xsl']">
    <xsl:element name="link">
      <xsl:text>newLink.xsl</xsl:text>
    </xsl:element>
</xsl:template>
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...