Xml Выражение Xpath для вложенных XML - PullRequest
0 голосов
/ 01 апреля 2020

У меня есть XML

<font-text content-format="howdy" data-type="text">
<Index>1</Index>
<Root>1</Root>
<Result>302</Result>
</font-text>

Каким будет выражение Xpath для вышеуказанного XMS, если я хочу вывести значения "Index", "Root" & "Result" в формат "302-01-01"

1 Ответ

2 голосов
/ 01 апреля 2020

XPath string-join() и format-number() функции для спасения.

format-number() функция существует в XSLT 2.0

Она была перемещена из XSLT 3.0 в XPath 3.0

XPath 3.0

string-join((/font-text/Result/text(), format-number(/font-text/Root/text(),'00'), format-number(/font-text/Index/text(),'00')), "-")

XPath 2.0

string-join((/font-text/Result/text()
, substring(concat("00", /font-text/Root/text()), string-length(concat("00",/font-text/Root/text())) - 1)
, substring(concat("00", /font-text/Index/text()), string-length(concat("00",/font-text/Index/text())) - 1))
, "-")

XPath 1.0

concat(/font-text/Result/text()
, "-"
, substring(concat("00", /font-text/Root/text()), string-length(concat("00",/font-text/Root/text())) - 1)
, "-"
, substring(concat("00", /font-text/Index/text()), string-length(concat("00",/font-text/Index/text())) - 1)
)
...