У меня есть следующий код для установки атрибута XSL id
для якорной ссылки:
<xsl:attribute name="id">
<xsl:variable name="articleUrl" select="concat(substring-before(substring-after(substring-after(document/documentinfo/uri/@path,$ps-group-path), 'content'),'psml'),'html')" as="xs:string*"/>
<xsl:variable name="articleArr" select="tokenize($articleUrl,'//')" />
<xsl:variable name="articleIndex" select="count($articleArr)" as="xs:integer" />
<xsl:value-of select="$articleArr[$articleIndex]" as="xs:string" />
</xsl:attribute>
Значение select
в первом xsl:variable
в этом случае составляет /news/2018/AT04651-article.html
. Я хочу разделить articleUrl
по буквальному слэшу /
, а затем выполнить еще один mumbo jumbo с массивом, чтобы извлечь последнюю часть массива (AT04651-article.html
), а затем в конечном итоге отрубить часть -article.html
до получить доступ к значению AT04651
...
Единственная проблема на данный момент заключается в том, что когда я попытался токенизировать строку через косую черту, значение, возвращаемое значением id
, я в итоге получил исходную строку, /news/2018/AT04651-article.html
в настоящее время не AT04651-article.html
, и значение $articleIndex
возвращается как 1 ... как будто функция tokenize
не работает ... Может кто-нибудь сказать мне, где я ошибся?
В этом случае я работаю с XSLT 2.0 ...