1

XSLTを学習しようとしていますが、問題が発生しました。私がやりたいのは、Webサイトからいくつかのデータを抽出し、それをxsltテンプレートで変換して、最後に自分のxhtmlページに表示することです。

私がxmlファイルを持っているとしましょう(これは私のxhtmlサイトになります):

<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN"
"http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<?xml-stylesheet type="text/xsl" href="myXSLTFile.xsl"?>


<!--here I want to have markup produced by xslt file-->

問題は、これをどのように達成するかです。xsltファイルを特定のWebサイト(たとえばhttp://www.example.com)のノードで機能させ、結果を自分のxmlファイルに生成したいと思います。

私の説明がわかりにくい場合は、質問してください。その問題についてもう少し詳しく説明しようと思います。

編集。例を挙げましょう。このページがあるとしましょう:http ://www.w3.org/TR/xhtml1/ 。完全な目次から章とセクションのタイトルを抽出し、それらを自分のxmlファイルのテーブルに配置するXSLTドキュメントを開発したいと思います。私が問題にしているのは、xsltファイルのhttp://www.w3.org/TR/xhtml1/を参照して、ノードで機能するようにする方法です(このページはxhtmlで記述されているため、 htmlからxmlへの変換について心配する必要があります)。

編集2。さらに調査したところ、Thomas W.の答えが問題の解決策であるように見えますが、XSSの問題に対処する必要があります(LarsHの答えのヒント)。

4

2 に答える 2

1

理論的には、次のようなことができます

<?xml version="1.0" encoding="UTF-8"?>
<?xml-stylesheet type="text/xsl" href="test.xsl"?>
<page href="http://www.w3.org/TR/xslt/index.htm"/>

のようなスタイルシートを持っている

<?xml version="1.0" encoding="UTF-8"?>
<xsl:stylesheet version="1.0" 
    xmlns:xsl="http://www.w3.org/1999/XSL/Transform" 
    xmlns="http://www.w3.org/1999/xhtml"
    xmlns:h="http://www.w3.org/1999/xhtml">

  <xsl:template match="/">
    <html>
      <head></head>
      <body>
        <xsl:for-each select="document(*/@href)//h:h2">
          <xsl:copy-of select="."/>
        </xsl:for-each>
      </body>
    </html>
  </xsl:template>

</xsl:stylesheet>

しかし、これは実際にはブラウザ間で機能しません(Chromeのみ、私にはそう思われます)。1つの理由は、外部ページのロードをブロックするXSSセキュリティ機能である可能性があります。

于 2013-01-07T20:12:52.653 に答える
1

XSSの制限を回避するためのいくつかの方法...ヘッダーを読むためのAJAXとクロスサイトスクリプティングを参照してください

  • ローカルPHPまたは他のサーバーページを追加して、他のWebサイトにプロキシします。
  • CORSを使用します。
于 2013-01-08T11:14:52.117 に答える