Могу ли я создать xsl: функцию с параметром в качестве узла? - PullRequest
0 голосов
/ 31 августа 2009

У меня есть сценарий для проверки даты из входящего xml-файла, в котором в качестве элемента используетсяffectiveTime, формат этого элемента может быть одним из них, как показано ниже

1)

<effectiveTime value="YYYYMMDD"/>

или

2)

<effectiveTime>
    <low value="YYYYMMDD"/>
    <high value="YYYYMMDD"/>
</effectiveTime>

если входящий файл имеет формат, указанный как точка 1 (как упомянуто выше), то мне нужно проверить, @value находится в ГГГГММДД или нет, если он находится в другом формате (2-й), мне нужно проверить низкий @value дата меньше или равна максимуму @value или нет.

У меня есть этот элемент (<effectiveTime>) в нескольких местах в моем входящем XML-файле, я хотел бы написать одну функцию xsl:, которая может проверять этот сценарий, и я хотел бы отправить узел (в данном случае эффективном времени) в качестве параметра в xsl: function.

<xsl:function name="util:validateEffectiveTime" as="xs:boolean">
    <!-- I would like to know xml schema data type for the param -->
    <xsl:param name="effectiveTimeP" as="****"/>
</xsl:function>

Могу ли я пойти дальше и создать любую xsl: function (util: validateEffectiveTime) с принимающим узлом в качестве параметра для этой xsl: function, а также сообщить мне тип данных XML-схемы, который мне нужно назначить для param (ffectiveTimeP)?

Спасибо!

1 Ответ

0 голосов
/ 31 августа 2009

Если вы передаете сами элементы <effectiveTime> в функцию, то функция всегда будет получать элемент в параметре effectiveTimeP. Хотя в случае сомнений типы параметров являются необязательными, поэтому вы можете полностью их исключить.

Для проверки даты я, вероятно, поместил бы это в ее собственную функцию (поскольку это будет необходимо в трех разных местах, поскольку есть три места, в которых могут появляться даты). Но во втором случае, поскольку даты расположены в порядке наибольшей значимости-часть-первая (год, месяц, день), вы можете убедиться, что одна находится перед другой с помощью простого численного сравнения.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...