Xml 我可以用下拉菜单填充XSLT变量吗?

Xml 我可以用下拉菜单填充XSLT变量吗?,xml,xslt,Xml,Xslt,请不要因为我问了一个愚蠢的问题而攻击我。 无论如何,这就是我正在做的——我正在处理一个XSLT文件,该文件与一个称为软件的XML文件一起工作。我不打算写整件事,只是一个小样本。有更多的应用程序,而不仅仅是一个 <?xml version="1.0" encoding="utf-8" ?> <?xml-stylesheet type="text/xsl" href="form.xslt"?> <software xmlns:xsi="http://www.w3.

请不要因为我问了一个愚蠢的问题而攻击我。 无论如何,这就是我正在做的——我正在处理一个XSLT文件,该文件与一个称为软件的XML文件一起工作。我不打算写整件事,只是一个小样本。有更多的应用程序,而不仅仅是一个

   <?xml version="1.0" encoding="utf-8" ?>
<?xml-stylesheet type="text/xsl" href="form.xslt"?>
<software
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="form.xstl"

>
  <aplication>
    <tittle>Libre Office</tittle>
    <vendor>Libreoffice.org</vendor>
    <category>office suite</category>
    <platform>
      <software>Windows</software>
      <versions>XP sp 2</versions>
      <hardware cpu="pentium" ram="256mb"></hardware>
       </platform>
    <price>0</price>

自由裁量局
Libreoffice.org
办公套房
窗户
XP sp 2
0
在样式表中有一个由上述HTML填充的下拉菜单

<select name="softwareCategory" id="softwareCategory">
    <xsl:for-each select="//category[not(.=preceding::*)]"> 
    <option  value="{category}">
    <xsl:value-of select="."/>          
    </option> 
    </xsl:for-each> 
</select> 

总之,我正在处理一个表——我正在寻找填充名为selectedCategory的XSL变量并使用菜单中选择的值填充它的代码。 如果在XSTL中不能做到这一点,我计划使用jquery 谢谢你抽出时间。 我正在使用下面的jquery更新内容,但它不起作用

$('softwareCategory').change(function() {

var selectedCategory =$('softwareCategory').find('option:selected').text();

$.get("students.xml",{},function(xml){

        // Build an HTML string
        myHTMLOutput = '';
        myHTMLOutput += '<table width="98%" border="1" cellpadding="0" cellspacing="0">';
        myHTMLOutput += '<th>Name</th><th>title</th></th>';

        // Run the function for each aplication tag in the XML file
        $('apliation',xml).each(function(i) {
            title = $(this).find("title").text();


            // Build row HTML data and store in string
            mydata = buildSoftware(title);
            myHTMLOutput = myHTMLOutput + mydata;
        });
        myHTMLOutput += '</table>'+selectedCategory;

        // Update the DIV called aprovedSoftwareTable with the HTML string
        $("aprovedSoftwareTable").append(myHTMLOutput);
    });

function BuildSoftware () {
output = '';
output += '<tr>';
output += '<td>';
output +=   '<input type="checkbox" name="value="'+title+'"" value="'+title+'">';
output += '</td>';
output += '<td>';
output += title;
output += '<td>';
output += '</tr>';

return output;
}
});
});
$('softwarecegory')。更改(函数(){
var selectedCategory=$('softwarecegory').find('option:selected').text();
$.get(“students.xml”,{},函数(xml){
//构建一个HTML字符串
myHTMLOutput='';
myHTMLOutput+='';
myHTMLOutput+='Nametitle';
//为XML文件中的每个应用程序标记运行该函数
$('apliance',xml).each(函数(i){
title=$(this.find(“title”).text();
//构建行HTML数据并以字符串形式存储
mydata=构建软件(标题);
myHTMLOutput=myHTMLOutput+mydata;
});
myHTMLOutput+=''+选定类别;
//使用HTML字符串更新名为aprovedSoftwareTable的DIV
$(“aprovedSoftwareTable”).append(myHTMLOutput);
});
功能构建软件(){
输出='';
输出+='';
输出+='';
输出+='';
输出+='';
输出+='';
输出+=标题;
输出+='';
输出+='';
返回输出;
}
});
});

XSLT不是交互式的。
选项的值不存在于文件中(甚至在HTML中也不存在)。但是——您可以通过命令行为XSLT处理器分配外部变量,例如Saxon:命令行不起作用——我将使用jquery。现在,我们来了解如何修复此错误“不安全地尝试从带有URL software.xml的框架加载URL form.xsl。域、协议和端口必须匹配。您的问题不清楚。缺少的主要内容是用途。”这段代码将填充一个变量“没有告诉我们任何事情。XSLT是将给定XML转换为另一个文档的工具。在您的情况下,目标文档似乎需要是HTML。如果是这样,请准确地向我们展示生成的HTML代码应该是什么。-顺便说一句,尽量减少示例是可以的,但它仍然应该是一个完整的、格式良好的XML文档;您的输入不是。变量的要点是基于变量填充图表。最初的计划是填充一个名为category的变量,然后该变量将获取数据并生成一个名为title和OS的图表。如果我不能使用XSL填充变量,那么我需要弄清楚如何使用jqueryAre来填充变量您是否在浏览器中运行此操作?如果是这样,传统的体系结构是XSLT生成HTML,然后在用户有机会与HTML页面交互之前离开场景。但是您可以考虑SAXON CE,它允许您处理来自XSLT代码内的用户交互事件。