XSLT Вопрос для начинающих - PullRequest
1 голос
/ 29 июня 2011

Мне довольно сложно найти информацию о том, как макетировать XSL при применении схемы с выводом xml.

В настоящее время у меня есть код для запуска c #:

         static void Main(string[] args)
            {
        XslCompiledTransform myXslTransform;
        myXslTransform = new XslCompiledTransform();
        myXslTransform.Load("testxls.xsl");
        myXslTransform.Transform("1BFC.xml", "testoutput.xml");
        //Console.ReadLine();
                   }

И мой xls выглядит как

     <?xml version="1.0"  encoding="windows-1252"?>
     <xsl:stylesheet  xmlns:xsl="http://www.w3.org/1999/XSL/Transform" version="1.0">
     <xsl:output indent="yes" method="xml" />
     <xsl:template match="/">
     <xsl:apply-templates />
     </xsl:template>

    <xsl:template match="FileImport">
    <FileImport>
    <xsl:apply-templates />
    </FileImport>
    </xsl:template>

    <xsl:template match="Global">
    <Global>
    <xsl:apply-templates />
    </Global>
    </xsl:template>

    <xsl:template match="GlobalParam">
   <GlobalParam>
    <xsl:attribute name="name">
        <xsl:value-of select="@name" />
    </xsl:attribute>
    <xsl:value-of select="."/>
    </GlobalParam>
    <GlobalParam>
    <xsl:attribute name="value">
        <xsl:value-of select="@value" />
    </xsl:attribute>
    <xsl:value-of select="."/>
    </GlobalParam>
    </xsl:template>

, который работает, но не выдает желаемого результата:вывод выглядит так:

          <FileImport>
          <Global>
         <GlobalParam name="RollName"></GlobalParam><GlobalParam value="SA2 10:00:00:00"></GlobalParam>
         <GlobalParam name="TapeOrg"></GlobalParam><GlobalParam value="10:00:00:00">                  </GlobalParam>
         <GlobalParam name="ReadStart"></GlobalParam><GlobalParam value="00:00:00:00"> </GlobalParam>
         <GlobalParam name="ReadDuration"></GlobalParam><GlobalParam value="00:02:26:18"></GlobalParam>

Все, что я хотел бы, содержится в глобальном теге, поэтому мне бы хотелось, чтобы оно выглядело так:

        <Global>
        <GlobalParam name="RollName" value="SA2" />
        <GlobalParam name="TapeOrg" value="10:00:00:00" />
        <GlobalParam name="ReadStart" value="00:00:00:00" />
        <GlobalParam name="ReadDuration" value="00:00:21:07" />
        </Global>

Просто могуКажется, не найти никакой информации по объяснению xml 2 xml XSL.Я не должен сдерживать это правильно. Спасибо за любую помощь или указатели.

Ответы [ 5 ]

2 голосов
/ 29 июня 2011

Или, если хотите,

<xsl:template match="GlobalParam">
  <GlobalParam name="{@name}" value="{@value}"/>
</xsl:template>
1 голос
/ 29 июня 2011

Ваш XSLT должен выглядеть так:

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

    <xsl:template match="Global">
        <Global>
            <xsl:apply-templates />
        </Global>
    </xsl:template>

    <xsl:template match="GlobalParam">
        <GlobalParam>
            <xsl:attribute name="name">
                <xsl:value-of select="@name" />
            </xsl:attribute>
            <xsl:attribute name="value">
                <xsl:value-of select="@value" />
            </xsl:attribute>
        </GlobalParam>
    </xsl:template>
</xsl:stylesheet>
0 голосов
/ 29 июня 2011

Я думаю, что вы хотите:

<xsl:template match="GlobalParam">
 <xsl:copy>
  <xsl:copy-of select="@name|@value"/>
 </xsl:copy>
</xsl:template>
0 голосов
/ 29 июня 2011

На первый взгляд кажется, что здесь есть пара проблем.Я считаю, что вам нужно применить шаблон GlobalParam в глобальном шаблоне (используя xsl: apply-templates).В шаблоне GlobalParam необходимо избавиться от среднего раздела, в котором вы закрываете, и снова открывать тег GlobalParam, чтобы имя и значение содержались в одном элементе.

0 голосов
/ 29 июня 2011

Удалите теги <GlobalParam> из атрибута значения.

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