XSLT найти и получить файл по его имени - PullRequest
1 голос
/ 06 марта 2019

Уважаемое сообщество Stackoverflow

Я так долго искал, но ничего не могу найти в этой теме, может, кто-то из вас может мне помочь.

Я ищу запрос XSLTransform, который позволяет мне найти и получить файл по его имени.

Я пытаюсь найти и вставить дополнительную информацию в текстовый файл, например, путь: C: /ErrorLogs/2019-03/Day1.txt

Заранее благодарю.

С уважением, PassCody

Btw. Я пишу в XSLT-2.0

---- EDIT ----

Я сейчас записал волшебство, и оно работает динамически, но если поступил новый ввод, сообщение об ошибке будет появляться после первого xD Может быть, кто-то из вас, ребята, может помочь мне с этой проблемой.

Например: ErrorMessage1ErrorMassage2

Моя цель: ErrorMessage1 [TAB] ErrorMessage2

Ответы [ 2 ]

2 голосов
/ 06 марта 2019

Если вам известно имя XML-файла, вы можете преобразовать имя файла в URI и предоставить его для функций doc() или document().

«Найти» файл, если вы не знаете его имени, немного сложнее; это зависит от того, с какой информации вы начинаете. Функция collection() доступна в XSLT 2.0; спецификация описывает его в очень абстрактных терминах, но многие реализации предоставляют здесь некоторые возможности поиска: см., например,

https://www.saxonica.com/html/documentation/sourcedocs/collections.html

0 голосов
/ 06 марта 2019

Hi PassCody,

Прежде всего, добро пожаловать в StackOverflow: D!

У меня есть к вам несколько вопросов:

  • Что вы хотите сделать с файлом? Вы хотите переместить / переименовать или вы хотите выполнить определенные операции с содержимым файл?
  • В какой структуре карты находится файл? Можете ли вы привести пример? Есть ли несколько файлов в одной папке?

Эта информация необходима для правильного ответа. Чем больше вы предоставите, тем лучше ответ поможет вашей конкретной ситуации.

Например, если вы хотите получить имя XML-файла в вашем текущем местоположении. Вы можете включить:

<URL:http://www.w3.org/TR/xpath-functions/#func-document-uri>
<xsl:value-of select="document-uri(/)"/>

Это предоставит вам полный URI (местоположение) вашего файла, чтобы получить имя файла, вам нужно выбрать строку после последней «/». Вы можете использовать функции подстроки для указания частей строки, которые вы хотите использовать.

Если вы можете включить путь к своим файлам в переменную ( см. Этот вопрос ), вы можете перебрать файлы в вашем текущем каталоге, чтобы создать новый файл с тем же содержимым, в которое вы могли бы записать новое место или делать все другие вещи с.

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

Надеюсь, это поможет! Хорошего дня.

Jesper

Редактировать: Я изменил часть своего ответа, чтобы не включать ошибочную информацию.

Редактировать: Ответ на вопрос в комментариях: Вы можете добавить часть "новой строки" в свой xslt в цикле кода. Добавьте <xsl:text>&#10;</xsl:text> или <xsl:text>&#xa;</xsl:text>. Любой из двух будет работать.

Вместо:
ErrorMessage1ErrorMessage2

Вы получите:
ErrorMessage1 ErrorMessage2

...