私はこの xslt を使用します (FpML は私のドキュメントのルートです):
<?xml version="1.0" encoding="UTF-8"?>
<xsl:stylesheet version="2.0"
xmlns:xsl="http://www.w3.org/1999/XSL/Transform">
<xsl:template match="/">
<xsl:sequence select="/FpML"/>
</xsl:template>
</xsl:stylesheet>
このコード内:
if(schema.isValid())
{
QXmlSchemaValidator validator(schema);
QByteArray data(this->xmlTextEdit->toPlainText().toStdString().c_str());
QBuffer buffer(&data);
buffer.open(QIODevice::ReadOnly);
if (validator.validate(&buffer))
qDebug() << "instance document is valid";
else
qDebug() << "instance document is invalid";
QXmlQuery query(QXmlQuery::XSLT20);
query.setFocus(&buffer);
qDebug() << QDir::current();
QUrl XSLT("test__.xslt");
if( XSLT.isValid())
{
query.setQuery(XSLT);
QString result;
query.evaluateTo(&result);
this->xslTextEdit->setPlainText(result);
}
}
そして、私はこのエラーを受け取りました:
at line 10, column 18: The focus is undefined
グーグルで調べたとき、私はこれを見つけました:
関数がユーザー定義関数の場合、変換された引数値は関数の仮パラメーターにバインドされ、関数本体が評価されます。次に、関数本体によって返される値は、関数変換規則を適用することによって、関数の宣言された戻り値の型に変換されます。
関数は、関数呼び出しの環境からフォーカス (コンテキスト項目、コンテキスト位置、およびコンテキスト サイズ) を継承しません。関数本体の評価中、関数本体内の式のアクションによって定義されている場合を除き、フォーカスは未定義です。フォーカスが定義されていないときにフォーカスに依存する式を使用すると、動的エラーが発生します。
しかし、私が理解しているかどうかはわかりません。問題は本当に私のスタイルシートにありますか?