1

Python/Google App Engine CRUD webapp に MathJax を使用しています。Content MathML を使用して数式を作成してもらいたい (Web アプリケーションがセマンティック情報を他の場所で活用できるようにするため)。

次に、この Content-to-Presentation MML XSLTを使用して、結果の Presentation MathML で MathJax を使用できるようにします。

通常、変換サービスを提供するには、次のようにします。

import lxml.etree as etree

class MathMLTranslator(object):
    def __init__(self):
        with open('ctop.xsl') as f:
            self.xslt = etree.XSLT(etree.XML(f.read()))

    def translate(self, xml_string):
            return self.xslt(etree.XML(xml_string))

しかしopen('ctop.xsl')、Google App Engine ではできません。またctop.xsl、MathMLTranslator で文字列リテラルとしてコンテンツを貼り付けることもできません (大きすぎて、両方のタイプの引用符が含まれています)。

どうすればこれを処理できますか?

4

3 に答える 3

1

アプリの一部としてアップロードされたファイルは、AppEngineで問題なく開くことができます。パスがアプリからの相対パスであることを確認する必要があります。たとえば、ctop.xslがPythonモジュールと同じディレクトリにある場合は、次のように実行できます。

fh = open(os.path.join(os.path.dirname(__file__), 'ctop.xsl')
于 2012-01-16T01:55:07.597 に答える
0

私はGAEに詳しくありませんが、任意のサイズのPythonファイルをアップロードできる場合は、ctop.xsl内容を.pyファイルに書き込むだけで済みます。例ctop_data.py:

ctop_xsl = """<xsl:stylesheet
version="1.0"
xmlns:xsl="http://www.w3.org/1999/XSL/Transform"
... SKIPPED
"""

次に、コードで次のことができます。

from ctop_data import ctop_xsl
...
self.xslt = etree.XSLT(etree.XML(ctop_xsl))
于 2012-01-15T07:16:00.860 に答える
-1

ファイルをドロップボックスに置き、ドロップボックス API を使用できます。

https://www.dropbox.com/developers/reference/api#files-GET

この目的のために python-requests をお勧めします:

https://github.com/kennethreitz/requests

同様のことを行うコードをherokuで実行していますが、Googleアプリエンジンからこれを行ったことはありません。

于 2012-01-14T22:24:52.070 に答える