Преобразование XML в XML с атрибутом гиперссылки - PullRequest
0 голосов
/ 16 января 2012

У меня есть вход XML, который похож на:

<data>
 <document docid="docfilename" />
 <record>ABC</record>
 <info>Testing</info>
 <case docid="casefilename">
  <details>
   Some random information
  </details>
  <author>Creator</author>
 </case>
 <page docid="pageurl">M Page</page>
</data>

Проблема в том, что я хочу преобразовать этот XML в точно такой же XML, который откроется в браузере, и люди смогут просматривать преобразованный XML, просто заменив значение атрибута docid гиперссылкой для просмотра docfilename / casefilename / pageurl в зависимости от ссылки.

Например,

<data>
 <document docid="<a href="docfilename.html">docfilename</a>" />
 <record>ABC</record>
 <info>Testing</info>
 <case docid="<a href="casefilename.html">casefilename</a>">
  <details>
   Some random information
  </details>
  <author>Creator</author>
 </case>
 <page docid="<a href="http://www.example.com">pageurl</a>">M Page</page>
</data>

В приведенном выше выводе вы можете просмотреть тег в docid, но пользователь будет видеть только ссылку в docid, где бы он ни находился, со ссылкой на файл в браузере.

Любая помощь для преобразования этого xml в данный формат будет высоко оценена.

1 Ответ

1 голос
/ 17 января 2012

Итак, в основном вы спрашиваете, как создавать гиперссылки, которые будут отображаться при открытии XML-документа в браузере?

Нет способа сделать это напрямую. Браузер должен только отображать данные в документе, он никогда не будет создавать такие гиперссылки.

Единственное жизнеспособное решение - это преобразовать его в настоящий документ HTML, который преобразует каждый элемент / атрибут в текст и переопределяет атрибуты, для которых вы хотите гиперссылки. Вот простой лист, который сделает это:

<code><?xml version="1.0"?>
<xsl:stylesheet version="1.0" xmlns:xsl="http://www.w3.org/1999/XSL/Transform">
  <xsl:output method="html" indent="yes"/>

  <xsl:template match="/">
    <html>
      <head>
        <title>XML source</title>
      </head>
      <body>
        <pre><xsl:apply-templates />
</ XSL: шаблон> & GT; </ XSL: текст> </ XSL: шаблон> </ XSL: шаблон> </ XSL: шаблон> & Quot; </ XSL: текст> </ XSL: шаблон> </ XSL: таблицы стилей>

Там не будет никакого красивого форматирования XML или свертывания / расширения узлов, делающих это, но вы по крайней мере сможете отображать XML с гиперссылками по мере необходимости. Как сказал @lwburk, вы на самом деле не указали, откуда должны исходить эти ссылки; Вы должны быть в состоянии приспособить это к вашим потребностям.

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