2012-01-14 14 views
1

私はPython/Google App Engine CRUD webappにMathJaxを使用しています。 Content MathMLを使って方程式を作成することができます(Webアプリケーションは意味情報を他の場所で活用できます)。Python - Google App Engineで外部XSLTファイルを使用する

this Content-to-Presentation MML XSLTを使用して、結果のプレゼンテーション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)) 

をしかし、私はGoogle App Engineの中でopen('ctop.xsl')を行うことができない、また私は単なる文字列としてctop.xslの内容を貼り付けることができますMathMLTranslatorのリテラル(大きすぎて両方の型の引用符があります)。

どうすれば対応できますか?

答えて

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)) 
1

あなたは、App Engine上だけで罰金のアプリの一部としてアップロードされたファイルを開くことができます - あなただけのパスが相対的であることを確認する必要がありアプリにたとえば、ctop.xslがあなたのPythonモジュールと同じディレクトリにある場合は、これを行うことができます:

fh = open(os.path.join(os.path.dirname(__file__), 'ctop.xsl') 
関連する問題