私は初めてxslに取り組んでいます。xsl を必要とする xml は、部門ごとに作成されます。今私が達成しようとしているのは、一度言及された Deparment 要素を xml の person 要素ごとに設定できることです。そして、私はこれを2日間見てきましたが、これに取り組む方法がわかりません.
これは XML です。
<?xml version="1.0" standalone="yes"?>
<ApptoAppExport>
<DepartmentData>
<DepartmentName>105</DepartmentName>
</DepartmentData>
<Person>
<EmployeeNumber>0010</EmployeeNumber>
</Person>
<Person>
<EmployeeNumber>0011</EmployeeNumber>
</Person>
</ApptoAppExport>
これが私の XSL です。
<?xml version="1.0" encoding="UTF-8"?>
<xsl:stylesheet xmlns:xsl="http://www.w3.org/1999/XSL/Transform" xmlns:msxsl="urn:schemas-microsoft-com:xslt" xmlns:scripts="urn:scripts.this" version="1.0">
<xsl:output method="xml" encoding="utf-8" />
<xsl:template match="/">
<xsl:element name="AppPersonList">
<xsl:apply-templates />
</xsl:element>
</xsl:template>
<xsl:template match="DepartmentData|Person">
<xsl:element name="AppPerson">
<xsl:call-template name="PersGuid" />
<xsl:call-template name="PersEmployeeNum" />
<xsl:call-template name="PersDepaGuid" />
</xsl:element>
</xsl:template>
<xsl:template name="PersGuid">
<xsl:variable name="EmpNum" select="./EmployeeNumber" />
<xsl:attribute name="PersGuid">
<xsl:value-of select="/Document/Persons/Row[scripts:MatchInsensitive(@PersEmployeeNum, $EmpNum)]/@PersGuid" />
</xsl:attribute>
</xsl:template>
<xsl:template name="PersDepaGuid">
<xsl:variable name="Depa" select="./DepartmentName" />
<xsl:attribute name="PersDepaGuid">
<xsl:choose>
<xsl:when test="/Document/Departments/Row[scripts:MatchInsensitive(@DepaName, $Depa)]">
<xsl:value-of select="/Document/Departments/Row[scripts:MatchInsensitive(@DepaName, $Depa)]/@DepaGuid" />
</xsl:when>
<xsl:otherwise>
<xsl:value-of select="scripts:MakeError($Depa)" />
</xsl:otherwise>
</xsl:choose>
</xsl:attribute>
</xsl:template>
</xsl:stylesheet>
「Department/Row」要素は、SQL データベース テーブル構造を参照します。その要素を使用して、xsl に、指定されたテーブルで DepaName と同じ名前の行を探し、それに属する Guid を与えるように指示できます。そのため、処理のために出力ファイルに入力できます。
ここで達成したいのは、resulted.xml からのこの出力ファイルです。
<?xml version="1.0" encoding="utf-8"?>
<AppPersonList>
<AppPerson PersGuid="ff3ecf77-f6d5-4260-a1d3-88ae13fcc931" PersDepaGuid="93e4fcba-306e-4071-ab63-248d78fed6c9" />
</AppPersonList>
しかし、これは私が得るものです:
<?xml version="1.0" encoding="utf-8"?>
<AppPersonList>
<AppPerson PersGuid="63f09537-5681-45b4-95a1-008808b8caac" PersDepaGuid="7ff981dc-7b56-403b-8c02-77f741a72e53" />
</AppPersonList>
<AppPersonList>
<AppPerson PersGuid="93e4fcba-306e-4071-ab63-248d78fed6c9" PersDepaGuid="IMPORTERROR:" />
</AppPersonList>
<AppPersonList>
<AppPerson PersGuid="ff3ecf77-f6d5-4260-a1d3-88ae13fcc931" PersDepaGuid="IMPORTERROR:" />
</AppPersonList>
したがって、一度は機能するようですが、最初の要素の「PersGuid」をチェックすると正しくないため、彼がどこからそれを取得したのかよくわかりません。その後、他の要素は埋められず、"ImportError:" メッセージが表示されます。
アプリ、xml、および xsl は、データをアップロードする必要があるテーブルを参照するコマンドラインによってトリガーされます。
これについてどうすればよいですか?
あなたの反応を前もって感謝します。