1

XSLTで次のことを行う方法についてXSLTについて説明する必要があります。

私はこのようにソースファイルを持っています。

<Data>
    <additem>                   
                <choice>desc</choice>
                <sectiontext>
                    <a title="google" href="http://google.com" xmlns="http://www.w3.org/1999/xhtml">
                        <strong>Sample Text</strong>
                        <ul>
                            <li><em>aa</em></li>
                            <li><em>bb</em></li>
                            <li><em>cc</em></li>
                        </ul>
                    </a>                        
                </sectiontext>

    </additem>
    <additem>   
                <choice>image</choice>
                <files>
                    <a xmlns="http://www.w3.org/1999/xhtml" title="image location" href="xyz:12-2022">
                        <img  alt="No Image" title="No Image" xlink:href="some image path" xmlns:xlink="http://www.w3.org/1999/xlink"></img>
                    </a>
                </files>
    </additem>
            <additem>                   
                <choice>Paragraph</choice>
                <sectiontext>
                    <a title="google" href="http://google.com" xmlns="http://www.w3.org/1999/xhtml">
                        <strong>Sample Text</strong>
                        <ul>
                            <li><em>aa</em></li>
                            <li><em>bb</em></li>
                            <li><em>cc</em></li>
                        </ul>
                    </a>
                    hello alll

                </sectiontext>

    </additem>
</Data>

出力:

<Information>

        <Section>
            <text>
                <strong>Sample Text</strong>
                        <ul>
                            <li><em>aa</em></li>
                            <li><em>bb</em></li>
                            <li><em>cc</em></li>
                        </ul>
            </text>
            <link external="http://google.com" title="google"></link>
        </Section>
        <picture>
            <image src="some image path" altText="No Image">
                <link local="xyz:12-2022" title="image location"></link>
            </image>
        </picture>
        <Body>
            <text>
                <hyperlink>
                    <text>
                        <strong>Sample Text</strong>
                                <ul>
                                    <li><em>aa</em></li>
                                    <li><em>bb</em></li>
                                    <li><em>cc</em></li>
                                </ul>
                    </text> 
                    <link external="http://google.com" title="google"></link>
                </hyperlink>
                hello alll
            </text>
        </Body>
</Information>

ルール:

1. addItem / choiceでの選択に応じて、タグを作成する必要があります。

    choice    --    Desc
    desc    --      Section
    image   --      picture
    Paragraph----Body

2.タグの処理現在、タグは他のタグをラップしています。

    A.If any element has only <a> in it. For example in the source,

            Code in the source:
            <sectiontext>
                    <a title="google" href="http://google.com" xmlns="http://www.w3.org/1999/xhtml">
                        <strong>Sample Text</strong>
                        <ul>
                            <li><em>aa</em></li>
                            <li><em>bb</em></li>
                            <li><em>cc</em></li>
                        </ul>
                    </a>                        
            </sectiontext>

そのタグを分離してタグを作成する必要があります

i. if the "href" in attribute in <a> tag starts with "xyz:" need to add it as "local" attribute in <link> element
ii. If the "href" in the attribute <a> tag starts with "http" need to add it as "external" attribute in <link> element.
ii. "title" attribute in <a> tag remains same in <link>

    B.if any element has any other element other than <a> tag.

        Code in the source:

        <sectiontext>
                    <a title="google" href="http://google.com" xmlns="http://www.w3.org/1999/xhtml">
                        <strong>Sample Text</strong>
                        <ul>
                            <li><em>aa</em></li>
                            <li><em>bb</em></li>
                            <li><em>cc</em></li>
                        </ul>
                    </a>
                    hello alll

        </sectiontext>

私は出力を取得する必要があります

        <text>
                <hyperlink>
                    <text>
                        <strong>Sample Text</strong>
                                <ul>
                                    <li><em>aa</em></li>
                                    <li><em>bb</em></li>
                                    <li><em>cc</em></li>
                                </ul>
                    </text> 
                    <link external="http://google.com" title="google"></link>
                </hyperlink>
                hello alll
        </text>

ルール:

  i. In the all the text inside the <a> tag have to come under the <inlinelink> tag as shown above.

誰かがそれをどのように行うことができるかを助けることができますか?

ありがとうございました。

4

1 に答える 1

0

このXSLT1.0スタイルシート..。

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

<xsl:template match="@*|node()">
 <xsl:copy>
   <xsl:apply-templates select="@*|node()" />
  </xsl:copy>
</xsl:template>

<xsl:template match="/">
 <Information>
   <xsl:apply-templates select="Data/additem"/>
 </Information>
</xsl:template>      

<xsl:template match="xhtml:a[../../self::additem]">
 <link title="{@title}">
  <xsl:if test="starts-with(@href,'http')">
    <xsl:attribute name="external"><xsl:value-of select="@href" /></xsl:attribute>
  </xsl:if>
  <xsl:if test="starts-with(@href,'xyz:')">
    <xsl:attribute name="local"><xsl:value-of select="@href" /></xsl:attribute>
  </xsl:if>
 </link>
</xsl:template>      

<xsl:template match="additem[choice='desc']">
 <Section>
  <text>
    <xsl:apply-templates select="sectiontext/xhtml:a/*" /> 
  </text>
  <xsl:apply-templates select="sectiontext/xhtml:a" />
 </Section>
</xsl:template>      

<xsl:template match="additem[choice='image']">
 <picture>
  <image src="{files/xhtml:a/xhtml:img/@xlink:href}" altText="{files/xhtml:a/xhtml:img/@alt}">
   <apply-templates select="files/xhtml:a" />
  </image>
 </picture>
</xsl:template>      

<xsl:template match="additem[choice='Paragraph']">
 <Body>
  <text>
   <hyperlink>
    <text>
     <xsl:apply-templates select="sectiontext/xhtml:a/*" />
    </text> 
    <xsl:apply-templates select="sectiontext/xhtml:a" />
   </hyperlink>
   <xsl:apply-templates select="sectiontext/node()[not(self::xhtml:a)]" />
  </text>
 </Body>
</xsl:template>      

</xsl:stylesheet>

...指定した入力ドキュメントをこの出力ドキュメントに変換します...

<?xml version="1.0" encoding="utf-8"?>
<Information xmlns:xhtml="http://www.w3.org/1999/xhtml" xmlns:xlink="http://www.w3.org/1999/xlink">
  <Section>
    <text>
      <strong xmlns="http://www.w3.org/1999/xhtml">Sample Text</strong>
      <ul xmlns="http://www.w3.org/1999/xhtml">
                            <li><em>aa</em></li>
                            <li><em>bb</em></li>
                            <li><em>cc</em></li>
                        </ul>
    </text>
    <link title="google" external="http://google.com" />
  </Section>
  <picture>
    <image src="some image path" altText="No Image">
      <apply-templates select="files/xhtml:a" />
    </image>
  </picture>
  <Body>
    <text>
      <hyperlink>
        <text>
          <strong xmlns="http://www.w3.org/1999/xhtml">Sample Text</strong>
          <ul xmlns="http://www.w3.org/1999/xhtml">
                            <li><em>aa</em></li>
                            <li><em>bb</em></li>
                            <li><em>cc</em></li>
                        </ul>
        </text>
        <link title="google" external="http://google.com" />
      </hyperlink>

                    hello alll

                </text>
  </Body>
</Information>

説明

各ルールは1つずつ取得され、一致条件の識別から始めて、テンプレートを作成するために使用されました。

于 2012-06-21T15:14:48.200 に答える