Генерация XSLT из XML - PullRequest
0 голосов
/ 15 мая 2018

У меня есть XML-файл с очень большим содержимым. У меня был файл xsd для этого файла xml.

Например: перейдите по этой ссылке

СОДЕРЖАНИЕ XML: http://formalmind.com/sites/default/files/blog/manual-testing.reqif

XSD Для этого XML: https://www.omg.org/spec/ReqIF/20110401/reqif.xsd

Мне нужно отобразить этот xml на странице HTML. Для этого мне нужен XSLT.

Можно ли автоматически сгенерировать XSLT для данного XML? или есть какой-то другой способ отображения в html-странице?

Результат HTML должен быть как

HTML_OUTPUT_IMAGE

Спасибо Sivabalakrishnan

1 Ответ

0 голосов
/ 15 мая 2018

Да, это возможно, но не ясно, что это полезный подход. Какую информацию в схеме вы собираетесь использовать для генерации XSLT? Вам нужно привести несколько примеров конструкций, которые вы найдете в схеме, и результирующие правила XSLT, которые вы хотите сгенерировать.

Есть два других варианта, которые вы должны рассмотреть:

(a) написание полностью универсальной таблицы стилей XSLT, которая обрабатывает любой документ независимо от его схемы. Например, он может содержать такие правила:

<xsl:template match="*[count(*)>1 and count(*)=count(distinct-values(*/node-name())]">
  <table>
    <xsl:for-each select="*">
      <tr>
        <td><xsl:value-of select="name()"/></td>
        <td><xsl:apply-templates/></td>
      </tr>
    </xsl:for-each>
  </table>
</xsl:template>

Это правило гласит, что если вы встретите элемент с 2 или более дочерними элементами, и у всех дочерних элементов есть разные имена, то отобразите таблицу, содержащую имена элементов в одном столбце и их значения в другом.

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

<xsl:template match="@*[data(.) instance of xs:decimal]">
   <xsl:value-of select="format-number(., '#,00', 'continental')"/>
</xsl:template> 

, при котором все значения десятичных атрибутов отображаются в таком формате, как 3,14.

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