在XML文件中动态传递href

在XML文件中动态传递href,xml,xslt,Xml,Xslt,如何在行中动态指定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" h

如何在行中动态指定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>

一月
19
01/01/2010
3729.71
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>

数据的子选择
名称
部
接收
薪水
我的具体问题/目标:

  • 如何合并iHeartGreek提供的代码片段
  • 是否有方法将“替换”xsl(代码段中的newLink.xsl)作为参数传递

  • 您可以使用XSLT文档来转换XML数据

    用法:(假设该节点称为“链接”)

    
    newLink.xsl
    
    两种可能的解决方案

    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) 使用“填充”模式(或Dimitre调用的“填充空格”)和元数据URI,通过
    fn:document()
    获取布局。看这个


    注意:PI是输入树的一部分。无论此输入树是来自已解析的文档还是由domapi或其他方式构建的,对于XSLT处理器,只有一个类型为“PI”的“静态”节点具有“final”字符串值

    我粘贴的行不显示href=“first.xsl”有一个将文本转换为代码的选项(这将确保类似文本的代码确实显示出来)。该按钮位于格式栏上,格式栏上有一堆二进制文件。如果您发布代码或XML,请在文本编辑器中突出显示这些行,然后单击编辑器工具栏上的“代码”按钮(101 010),以精确地格式化和语法突出显示它!谢谢,我听说了。我需要更多的帮助。我的XML(first.XML)看起来像:1月19日01/01/2010 3729.71如果我想使用可选的newLink.xsl,我在哪里/如何合并您的代码片段?在first.xml或first.xsl中?@aa2e72e:首先,在注释中阅读那么多代码是非常困难的,如果您想显示有关xml代码的更多详细信息,请编辑您的问题。@aa2e72e:其次,因为您的问题格式不正确,我假设您要替换的文本位于名为“链接”的节点中,因此,完全复制/粘贴我的解决方案对您不起作用。但它给了你一个起点。为了回答您的问题,我的解决方案需要创建一个新的XSLT文档来进行转换。听起来您以前从未使用过XSLT(也称为XSL)?iHeartGreek:您说得对-我没有超过3天的XSLT经验。marc_s:感谢您提供有关编辑/发布的提示。+1很棒的解决方案!:)我的解决方案是在他编辑问题之前提交的,我不得不假设他只是想更改一个常规的ol'节点,而不是一条处理指令。。也许我会删除它。
    <xsl:processing-instruction name="xml-stylesheet">
        <xsl:value-of select="concat('type=&quot;text/xsl&quot; href=&quot;',
                                     $whatever,
                                     '&quot;')"/>
    </xsl:processing-instruction>