0

XSLT を使用するプログラムを作成しており、結果ドキュメント呼び出しの内容を Xspec でテストする必要があります。以下の例では、result.xml の内容をテストしたいと思います。これが可能である場合、どのようにこれを行いますか?

XML: test.xml

<?xml version="1.0" encoding="UTF-8"?>
<root></root>

XSLT: 結果ドキュメント.xsl

<?xml version="1.0" encoding="UTF-8"?>
<xsl:stylesheet xmlns:xsl="http://www.w3.org/1999/XSL/Transform"
    xmlns:xs="http://www.w3.org/2001/XMLSchema"
    version="2.0">
    <xsl:template match="/root">
        <xsl:result-document href="result.xml">
            <my-result></my-result>
        </xsl:result-document>
    </xsl:template>
</xsl:stylesheet>

Xスペック:

<x:description xmlns:x="http://www.jenitennison.com/xslt/xspec" stylesheet="result-document.xsl">
    <x:scenario label="Test result document">
        <x:context href="test.xml"></x:context>
        <!-- How do you test the result.xml file here? -->
        <x:expect label="test result">
            <my-result></my-result>
        </x:expect>
    </x:scenario>
</x:description>
4

1 に答える 1

1

私は同じ答えを探していましたが、これは XSpec の実装方法に固有の制限であると思われます。

回避策は、結果ドキュメントを使用するテスト不可能なテンプレートを1つ用意し、結果ドキュメント内でテスト可能な一致または呼び出しテンプレートを使用することだと思います。

XSLT

<xsl:template match="/root">
    <xsl:result-document href="result.xml">
        <xsl:call-template name="my-result"/>
    </xsl:result-document>
</xsl:template>

<xsl:template name="my-result">
  <!-- content -->
</xsl:template>

XSPEC

<x:scenario label="when calling my-result">
  <x:call template="my-result"/>
  <x:expect label="test something" pending="add your tests here"/>
</x:scenario>

したがって、結果ドキュメントが正しい方法で作成されていることを実際にテストすることはできませんが、その結果を確認することはできます。

XSPEC は文字通り「result.xml の内容をテスト」しないことに注意してください。XSPEC 自体で指定した入力に対する XSLT の動作だけです。

于 2015-03-31T09:35:06.050 に答える