2

関連するボタンをクリックして xml/xslt テーブルをソートする最も簡単な方法を知りたいです。私は xslt にはかなり精通していますが、Javascript には非常に慣れていないので、気楽に行ってください。

私はインターネットで多くの例を見てきましたが、私がやろうとしていることに本当に合っているものはないように思えます.

私はかなり外れているかもしれませんが、私は次のようなことを考えていました...

xslt:

<button onclick="title()">sort by title</button>
<!--some xsl code-->
<xsl:for each select="record">
<xsl:sort id="title" select="dates/year"/>
<!--more xsl code-->

Javascript:

function title() {
document.getElementById(title).select="titles/title";
}

また、Javascript コードをどこに配置するかについても明確ではありません。xml および xsl ファイルを html として表示する .js ファイルを既に取得しています。このコードをそこに置くことはできますか? または、xsl ファイルにインライン スクリプトが必要ですか? Javascript を xsl ファイルに添付する多くの方法を見てきましたが、どの方法が自分の目的に最適かわかりません

4

2 に答える 2

1

XSLT には慣れているが Javascript には慣れていない場合は、ユーザー インタラクション イベントを処理するための拡張機能を備えたブラウザーで XSLT 2.0 を提供する Saxon-CE を検討することをお勧めします。マウスクリックに応答してテーブルをソートする方法を示す簡単な例があります:

http://www.saxonica.com/ce/doc/samples/booklist.xml

于 2012-09-25T09:08:14.857 に答える
0

これは私がやったことであり、うまく機能します!

HTML:xml ドキュメント ロード用の div がありました

<button type="button" id="sorttitle" onclick="sorttitle()">sort by title</button>
<button type="button" id="sortauthor" onclick="sortauthor()">sort by author</button>
<button type="button" id="sortyear" onclick="sortyear()">sort by year</button>
<button type="button" id="sortpublisher" onclick="sortpublisher()">sort by publisher</button>

ジャバスクリプト

function sorttitle(){
document.getElementById("sortauthor").style.backgroundColor="#000";
document.getElementById("sortyear").style.backgroundColor="#000";
document.getElementById("sortpublisher").style.backgroundColor="#000";
document.getElementById("sorttitle").style.backgroundColor="#666";
xsl=loadXMLDoc("sorttitle.xsl");
if (window.ActiveXObject)
  {
  sortedDocument=xml.transformNode(xsl);
  document.getElementById('content').innerHTML=sortedDocument;
}
else {
  xsltProcessor=new XSLTProcessor();
  xsltProcessor.importStylesheet(xsl);
  sortedDocument = xsltProcessor.transformToFragment(xml,document);
  document.body.replaceChild(sortedDocument,document.getElementById('content'));
}}

function sortauthor(){
document.getElementById("sorttitle").style.backgroundColor="#000";
document.getElementById("sortyear").style.backgroundColor="#000";
document.getElementById("sortpublisher").style.backgroundColor="#000";
document.getElementById("sortauthor").style.backgroundColor="#666";
xsl=loadXMLDoc("sortauthor.xsl");
if (window.ActiveXObject)
  {
  sortedDocument=xml.transformNode(xsl);
  document.getElementById('content').innerHTML=sortedDocument;
}
else {
  xsltProcessor=new XSLTProcessor();
  xsltProcessor.importStylesheet(xsl);
  sortedDocument = xsltProcessor.transformToFragment(xml,document);
  document.body.replaceChild(sortedDocument,document.getElementById('content'));
}}

function sortyear(){
document.getElementById("sorttitle").style.backgroundColor="#000";
document.getElementById("sortauthor").style.backgroundColor="#000";
document.getElementById("sortpublisher").style.backgroundColor="#000";
document.getElementById("sortyear").style.backgroundColor="#666";
xsl=loadXMLDoc("sortyear.xsl");
if (window.ActiveXObject)
  {
  sortedDocument=xml.transformNode(xsl);
  document.getElementById('content').innerHTML=sortedDocument;
}
else {
  xsltProcessor=new XSLTProcessor();
  xsltProcessor.importStylesheet(xsl);
  sortedDocument = xsltProcessor.transformToFragment(xml,document);
  document.body.replaceChild(sortedDocument,document.getElementById('content'));
}}

function sortpublisher(){
document.getElementById("sorttitle").style.backgroundColor="#000";
document.getElementById("sortauthor").style.backgroundColor="#000";
document.getElementById("sortyear").style.backgroundColor="#000";
document.getElementById("sortpublisher").style.backgroundColor="#666";
xsl=loadXMLDoc("sortpublisher.xsl");
if (window.ActiveXObject)
  {
  sortedDocument=xml.transformNode(xsl);
  document.getElementById('content').innerHTML=sortedDocument;
}
else {
  xsltProcessor=new XSLTProcessor();
  xsltProcessor.importStylesheet(xsl);
  sortedDocument = xsltProcessor.transformToFragment(xml,document);
  document.body.replaceChild(sortedDocument,document.getElementById('content'));
}}

XML: 特定の並べ替えを指定した複数の xsl ファイルがありました。各関数は異なるスタイル シートを呼び出します。

于 2012-10-24T18:47:01.017 に答える