Способ избежать создания подкаталога в topicref - PullRequest
0 голосов
/ 18 апреля 2011

У меня есть очень простое совпадение с шаблоном в моем xslt-коде для создания ditamap, и оно работает путем простого создания themeref всякий раз, когда совпадает с «Разделом» исходного документа.

Исходный фрагмент кода XML выглядитнапример:

<Section Target="IL27TRM409TueAug251754042009251">
<Heading Target="v5170372">WBG (S-GW/P-GW) chassis </Heading>

Соответствие шаблона xslt для раздела выглядит следующим образом:

<xsl:template match="Section> 
 <xsl:variable name="file" select="Heading"/>
 <xsl:variable name="fileName" select="translate(normalize-space($file),' ','_')"/>   
  <topicref format="dita" href="{translate(./$fileName,' ','_')}.xml"  navtitle="{./Heading}">
   <xsl:apply-templates/>
  </topicref>

Код работает, за исключением того, что для заголовка, как указано выше "WBG (S-GW / P-GW) chassis ", он будет принимать" / "в качестве подпапки, поэтому он создаст подформатор с именем" WBG (S-GW ", а затем создаст файл" P-GW) _chassis.xml ".

Есть ли способ заставить xslt игнорировать "/" в заголовке и просто обрабатывать его как строку, чтобы создать файл XML, просто используя эту строку?

1 Ответ

1 голос
/ 18 апреля 2011

Роберт, просто чтобы расширить @ правильный ответ / комментарий Алехандро:

Это не XSLT создает папку.XSLT уже «игнорирует» / в заголовке: он не рассматривает его как нечто особенное.(Посмотрите на вывод XSLT, и вы это увидите.)

В какой ОС (или, точнее, файловой системе) вы создаете файлы?В зависимости от этого, '/' может быть недопустимым символом в именах файлов, поэтому замена его на другой символ может быть единственным вариантом.Попробуйте назвать файл a/b вручную и посмотрите, возможно ли это.Поскольку вы уже используете normalize-space(), похоже, что вам совершенно не обязательно сохранять содержимое заголовка точно в имени файла.

Чтобы заменить - на /, измените выражение translate() следующим образомэто:

translate(normalize-space($file),' /','_-')

Это означает, что "замените _ на каждый пробел и замените - на каждый /."

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