2017-10-02 3 views
-1

xmlファイルを読み込み、タグからEmployeeNameおよびEmailId値をキャプチャしてxmlファイルとして出力する必要があります。 最初のタグは常にEmployeeNameを表し、5番目のタグは常にEmailIdを表します。<value>タグを取得するxmlファイルを読み取る

次のように

....行/値の現在値をキャプチャするために、入力XMLファイルが必要です。

<?xml version="1.0" encoding="utf-8"?> 
<dataset xmlns="http://developer.net.com/schemas/xmldata/1/" xmlns:xs="http://www.w3.org/2001/XMLSchema-instance"> 
    <!-- 
<dataset 
    xmlns="http://developer.net.com/schemas/xmldata/1/" 
    xmlns:xs="http://www.w3.org/2001/XMLSchema-instance" 
    xs:schemaLocation="http://developer.net.com/schemas/xmldata/1/ xmldata.xsd" 
> 
--> 
    <metadata> 
     <item length="20" type="xs:string" name="EmployeeName"/> 
     <item length="4" type="xs:string" name="Full/Part Time Code"/> 
     <item type="xs:dateTime" name="Hire Date"/> 
     <item type="xs:dateTime" name="Termination Date"/> 
     <item length="30" type="xs:string" name="EmailID"/> 
     <item length="30" type="xs:string" name="State"/> 
     </metadata> 
     <data> 
      <row> 
      <value>JOSEPH</value> 
      <value>F</value> 
      <value>1979-04-19T00:00:00</value> 
      <value>2007-08-27T00:00:00</value> 
      <value>[email protected]</value> 
      <value>TX</value> 
      </row> 
      <row> 
      <value>NANDY</value> 
      <value>F</value> 
      <value>1979-04-19T00:00:00</value> 
      <value>2007-08-27T00:00:00</value> 
      <value>[email protected]</value> 
      <value>PA</value> 
     </row> 
     </data> 
    </dataset> 

期待出力リレー以下のように:

<?xml version="1.0" encoding="UTF-8"?> 
<ns0:EMPLOYEEDETAILS xmlns:ns0="http://net.com/EmployeeDetails"> 
<Records> 
<EmployeeName>JOSEPH</EmployeeName> 
<EmailId>[email protected]</EmailId> 
</Records> 
<Records> 
<EmployeeName>NANDY</EmployeeName> 
<EmailId>[email protected]</EmailId> 
</Records> 
</ns0:EMPLOYEEDETAILS> 

ありがとう、 ラビ

+2

入力データは、不正な形式です。いずれにせよ、私たちはコーディングサービスではありません。あなた自身で問題を解決するための真摯な善意の努力の証拠を提示し、遭遇した*具体的な問題に関する1つ以上の質問を提出してください。 –

+0

こんにちはJohn、私たちはurl-https://stackoverflow.com/questions/5270568/how-to-use-xslt-to-get-only-certain-rows-and-certain- columnにあるコードに従って試してみました。それは動作していません。 – raviteja

答えて

0

下記のXSLTをお試しください。 入力XMLに従って一致する名前空間を追加して変更し、ルートノード<EMPLOYEEDETAILS>を出力に追加する必要があります。

EDIT: XSLTソリューションが名前空間の問題を処理するように更新されました。ルートノード<ns0:EMPLOYEEDETAILS>がソリューションに含まれています。コードは、番組をハイライトとして

<xsl:stylesheet version="1.0" xmlns:xsl="http://www.w3.org/1999/XSL/Transform" 
    xmlns:ns0="http://developer.net.com/schemas/xmldata/1/"> 
    <xsl:output method="xml" indent="yes" /> 
    <xsl:strip-space elements="*"/> 

    <xsl:param name="param-name" select="1" /> 
    <xsl:param name="param-email" select="5" /> 

    <xsl:template match="/"> 
     <ns0:EMPLOYEEDETAILS> 
      <xsl:for-each select="//ns0:data/ns0:row"> 
       <Records> 
        <xsl:for-each select="ns0:value"> 
         <xsl:choose> 
          <xsl:when test="position() = $param-name"> 
           <EmployeeName> 
            <xsl:value-of select="." /> 
           </EmployeeName> 
          </xsl:when> 
          <xsl:when test="position() = $param-email"> 
           <EmailId> 
            <xsl:value-of select="." /> 
           </EmailId> 
          </xsl:when> 
         </xsl:choose> 
        </xsl:for-each> 
       </Records> 
      </xsl:for-each> 
     </ns0:EMPLOYEEDETAILS> 
    </xsl:template> 
</xsl:stylesheet> 

出力

<ns0:EMPLOYEEDETAILS xmlns:ns0="http://developer.net.com/schemas/xmldata/1/"> 
    <Records> 
     <EmployeeName>JOSEPH</EmployeeName> 
     <EmailId>[email protected]</EmailId> 
    </Records> 
    <Records> 
     <EmployeeName>NANDY</EmployeeName> 
     <EmailId>[email protected]</EmailId> 
    </Records> 
</ns0:EMPLOYEEDETAILS> 
+0

こんにちはAniket、私たちは与えられたコードを試しましたが、ouptut結果は期待どおりではありません。シナリオをテストするためにオンラインtoolz.comを使用します。与えられたxsltの出力は次のとおりです。<?xml version = "1.0"?> JOSEPHF1979-04-19T00:00:002007-08-27T00:00:00joseph.Tim @ gmail.comTXNANDYF1979-04-19T00:00:002007-08-27T00:00:00Nandy123 @ gmailcomPA – raviteja

+0

あなたが示したように結果が得られる理由がわかりません。投稿された回答の結果を表示するには、[link](http://xsltransform.net/6pS1zDJ)を参照してください。それでも問題がある場合は、上記の最適化されたソリューションを少し変更して、期待される出力を得ることができます。 –

+0

Aniketさん、<?xml version = "1.0" encoding = "utf-8"に名前空間がありますか?> 問題の原因となっています。 – raviteja

関連する問題