Я думаю, что вы все делаете правильно, но контекст ваших относительных xpaths неверен. Попробуйте использовать абсолютные пути в элементах expect
, например, и , выбрав корневой элемент :
<x:scenario label="Scenario for testing an EDIFACT document type for inbound file">
<x:context href="testdata.xml" select="/">
</x:context>
<x:expect label="Message type identifier" test="/List/M_INSDES/S_UNH/C_S009/D_0065 = 'INSDES'"></x:expect>
<x:expect label="Message type version number" test="/List/M_INSDES/S_UNH/C_S009/D_0052 = 'D'"></x:expect>
<x:expect label="Message type release number" test="/List/M_INSDES/S_UNH/C_S009/D_0054 = '96A'"></x:expect>
</x:scenario>
Я думаю, что относительные пути не работают, потому что ваша таблица стилей просто копирует весь документ при сопоставлении корневого элемента. В отчете XSpec с ошибками видно, что результатом испытаний с относительными путями являются только строковые значения элементов.
До того, как вы опубликовали свою таблицу стилей, я использовал таблицу стилей с рекурсивным шаблоном "копировать все узлы".
<xsl:template match="node() | @*">
<xsl:copy>
<xsl:apply-templates select="node() | @*"/>
</xsl:copy>
</xsl:template>
С этой таблицей стилей относительные пути работают нормально.
<x:scenario label="Scenario for testing an EDIFACT document type for inbound file">
<x:context href="testdata.xml" select="/List/M_INSDES/S_UNH/C_S009">
</x:context>
<x:expect label="Message type identifier" test="C_S009/D_0065 = 'INSDES'"></x:expect>
<x:expect label="Message type version number" test="C_S009/D_0052 = 'D'"></x:expect>
<x:expect label="Message type release number" test="C_S009/D_0054 = '96A'"></x:expect>
</x:scenario>