これが私の問題です。
呼び出しテンプレート、別のファイルのテンプレート コード、テンプレート コードのコンテンツを編集できるが、メインの XSLT を編集できない事前ビルド XSLT があります。
私の現在のコード
School_College.xsl (これは編集できません)
<xsl:stylesheet version="1.0"
xmlns:xp20="http://www.oracle.com/XSL/Transform/java/oracle.tip.pc.services.functions.Xpath20"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xmlns:xsl="http://www.w3.org/1999/XSL/Transform"
xmlns:xsd="http://www.w3.org/2001/XMLSchema"
xmlns:ns0="http://www.myschool.org"
xmlns:ora="http://schemas.oracle.com/xpath/extension"
xmlns:ns1="http://www.mycollege.org"
<xsl:import href="school_college_custom.xsl"></xsl:import>
<xsl:template match="/">
<ns1:College>
<ns1:Batch>
<ns1:StudentsCount>
<xsl:value-of select="/ns0:School/ns0:Class/ns0:NoOfStudents"/>
</ns1:StudentsCount>
<ns1:TeachersCount>
<xsl:value-of select="/ns0:School/ns0:Class/ns0:NoOfTeachers"/>
</ns1:TeachersCount>
<ns1:BatchStartTime>
<xsl:value-of select="/ns0:School/ns0:Class/ns0:ClassStartTime"/>
</ns1:BatchStartTime>
<xsl:call-template name="batch_ext"></xsl:call-template>
</ns1:Batch>
</ns1:College>
</xsl:template>
school_college_custom.xsl (これを変更し、インポートして上から呼び出すことができます)
<?xml version="1.0" encoding="windows-1252" ?>
<xsl:stylesheet version="1.0" xmlns:xsl="http://www.w3.org/1999/XSL/Transform"
xmlns:ns1="http://www.mycollege.org">
<xsl:template name="batch_ext">
<ns1:BatchEndTime>
<xsl:value-of select="'5PM'"/>
</ns1:BatchEndTime>
<ns1:BreakTime>
<xsl:value-of select="'1PM'"/>
</ns1:BreakTime>
</xsl:template>
</xsl:stylesheet>
ソース XML:
<?xml version="1.0" encoding="UTF-8" ?>
<School xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://www.myschool.org xsd/school.xsd"
xmlns="http://www.myschool.org">
<Class>
<NoOfStudents>10</NoOfStudents>
<NoOfTeachers>2</NoOfTeachers>
<ClassStartTime>9AM</ClassStartTime>
</Class>
</School>
ターゲット XML:(現在)
<?xml version="1.0" encoding="UTF-8" ?>
<College xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://www.mycollege.org ../xsd/college.xsd"
xmlns="http://www.mycollege.org">
<Batch>
<StudentsCount>10</StudentsCount>
<TeachersCount>2</TeachersCount>
<BatchStartTime>9AM</BatchStartTime>
<BatchEndTime>5PM</BatchEndTime>
<BreakTime>1PM</BreakTime>
</Batch>
</College>
BatchStartTime を 10AM (任意の値) に更新する方法はありますか。しかし、school_college_custom.xsl のみを変更する必要があります。テンプレートに「BatchStartTime」要素を追加すると(以下のように)、重複する要素が作成されます
私のコード:これは機能していません(重複ノードを作成しています)
<?xml version="1.0" encoding="windows-1252" ?>
<xsl:stylesheet version="1.0" xmlns:xsl="http://www.w3.org/1999/XSL/Transform"
xmlns:ns1="http://www.mycollege.org">
<xsl:template name="batch_ext">
<ns1:BatchStartTime>
<xsl:value-of select="'10AM'"/>
</ns1:BatchStartTime>
<ns1:BatchEndTime>
<xsl:value-of select="'5PM'"/>
</ns1:BatchEndTime>
<ns1:BreakTime>
<xsl:value-of select="'1PM'"/>
</ns1:BreakTime>
</xsl:template>
</xsl:stylesheet>
ターゲット XML:(予想どおり、このような出力が必要です)
<?xml version="1.0" encoding="UTF-8" ?>
<College xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://www.mycollege.org ../xsd/college.xsd"
xmlns="http://www.mycollege.org">
<Batch>
<StudentsCount>10</StudentsCount>
<TeachersCount>2</TeachersCount>
<BatchStartTime>10AM</BatchStartTime>
<BatchEndTime>5PM</BatchEndTime>
<BreakTime>1PM</BreakTime>
</Batch>
</College>
ターゲット XML:(上記のコードからの実際の出力)
<?xml version="1.0" encoding="UTF-8" ?>
<College xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://www.mycollege.org ../xsd/college.xsd"
xmlns="http://www.mycollege.org">
<Batch>
<StudentsCount>10</StudentsCount>
<TeachersCount>2</TeachersCount>
<BatchStartTime>9AM</BatchStartTime>
<BatchStartTime>10AM</BatchStartTime>
<BatchEndTime>5PM</BatchEndTime>
<BreakTime>1PM</BreakTime>
</Batch>
</College>
解決策を教えてください。前もって感謝します。