Фон У меня есть проверка схемы и перевод xslt в pdf.
Проблема Я хочу проверить, присутствует ли содержимое в теге xml в спискедействительных кодов во внешнем файле.интересны только значения атрибутов во внешнем файле.Значения узла используются для других целей в другой таблице стилей.
<xsl:template match="//medicalFieldcode" priority="1000" mode="M4">
<svrl:fired-rule xmlns:svrl="http://purl.oclc.org/dsdl/svrl" context="//medicalFieldcode"/>
<xsl:variable name="MVOcodes" select="document('verksamhetskodlista.xml')"/>
<!--ASSERT -->
<xsl:choose>
<xsl:when test="boolean($MVOcodes/module/document-merge/g-funcs/g[contains(@name,.)])"/>
<xsl:otherwise>
<svrl:failed-assert xmlns:svrl="http://purl.oclc.org/dsdl/svrl"
test="boolean($MVOcodes/module/document-merge/g-funcs/g[contains(@name,.)])">
<xsl:attribute name="id">R43</xsl:attribute>
<xsl:attribute name="location">
<xsl:apply-templates select="." mode="schematron-select-full-path"/>
</xsl:attribute>
<svrl:text>MedicalFieldCode must be in the valid list of codes.</svrl:text>
</svrl:failed-assert>
</xsl:otherwise>
</xsl:choose>
<xsl:apply-templates select="*|comment()|processing-instruction()" mode="M4"/>
</xsl:template>
Внешний файл (verksamhetskodlista.xml) имеет следующую структуру:
<module xmlns:mmx="http://funx" xmlns:html="http://www.w3.org/1999/xhtml" xmlns:svg="http://www.w3.org/2000/svg" xmlns:fnc="http://funx/fnc" xmlns:att="http://funx/att" xmlns:xsl="http://www.w3.org/1999/XSL/Transform" version="1.0">
<document-merge>
<g-funcs>
<g name="003">value1</g>
<g name="009">another value</g>
<g name="011">yet another value</g>
<!-- ... -->
</g-funcs>
</document-merge>
Извлечьиз образца xml:
<ProcessClaimSpecification xmlns="urn:riv:financial:billing:claim:ProcessClaimSpecificationResponder:1">
<s01:claimSpecification xmlns="urn:riv:financial:billing:claim:1" xmlns:s01="urn:riv:financial:billing:claim:ProcessClaimSpecificationResponder:1">
<healthCareServicesSpecificationLine>
<healthcarePerformed>
<!-- a bunch of content -->
<activity>
<medicalFieldCode>000</medicalFieldCode>
</activity>
</healthcarePerformed>
</healthCareServicesSpecificationLine>
</s01:claimSpecification>
Мне нужно проверить это с помощью xpath.Я пытался применить это содержит инструкцию без большой удачи, и я искал, но безрезультатно.
Проблема в том, что он всегда отображается как true, даже если используется 000, которого нет в списке кодов.Я пробовал много разных реструктурированных разновидностей содержимого xpath, но он не работает удовлетворительно.Я не уверен, что пришел с правильного угла здесьЯ использую xslt 2.0, поэтому переменная должна содержать набор узлов.
Помимо прочего, я пробовал эти выражения xpath
boolean($MVOcodes/module/document-merge/g-funcs/g[contains(@name,.)])
contains($MVOcodes/module/document-merge/g-funcs/g/@name, .)
Я занимался этим несколько дней, никуда не денясь, поэтому, пожалуйста, помогите?Внешний файл также используется в другом документе xsl, поэтому он имеет такую структуру.Я подумал, что если я буду использовать это снова, это меньше, чтобы поддерживать.