여기에 내 벽을 때려 ...XSLT 2.0. 함수 내의 루프
주 직원이 여러 부양 가족을 가질 수있는 다음 데이터가 있습니다. Dependent_SSN에 대해 Employee 's SSN (ab : SSN)과 일치하는 함수를 만들고 그 중 하나가 '배우자'인지 확인해야합니다. 그렇다면 우리는 '배우자'의 Dependent_SSN을 반환 할 것입니다. 그렇지 않으면 우리는 다음 단계의 'Spouse'Dependent_SSN을 반환합니다.
필자는 두 번 이상 필요하다고 생각하는 함수를 만들려고합니다. 코드 스 니펫은 다른 루핑 기능을 수행하는 기존 템플리트 내에 있습니다.
나는이 시도했지만 산소는 오류를 반환 :
<xsl:function name="ab:PQB">
<xsl:param name="EE_SSN">
</xsl:param>
<xsl:for-each select="/ab:Report_Data/ab:Report_Entry[ab:Employee_ID=$EE_SSN]/ab:Report_Data/ab:Report_Entry[ab:Employee_ID=$EE_SSN]ab:dependents/ab:Dependent_SSN">
</xsl:for-each>
오류가 반환됩니다
"엔진 명 : 색슨-PE 9.3.0.5 심각도 : 치명적인 설명 : 예기치 않은 토큰 이름 "wd : 종속 변수"끝 부분을 넘어서 "
나는 부양 가족을 반복하면서 높은 수준의 SSN을 테스트해야한다는 것을 알고 있지만"나는 내 벽에 맞았다 "고 말했다.
데이터는 여기에 있습니다 :
<ab:Report_Entry>
<ab:SSN>888881006</ab:SSN>
<ab:Last_Name>Smith</ab:Last_Name>
<ab:First_Name>Kimberly</ab:First_Name>
<ab:dependents>
<ab:Dependent_SSN>888881009</ab:Dependent_SSN>
<ab:Relation ab:Descriptor="Spouse">
</ab:Relation>
</ab:dependents>
<ab:dependents>
<ab:Dependent_SSN>888881004</ab:Dependent_SSN>
<ab:Relation ab:Descriptor="Child">
</ab:Relation>
</ab:dependents>
<ab:dependents>
<ab:Dependent_SSN>888881003</ab:Dependent_SSN>
<ab:Relation ab:Descriptor="Child">
<ab:ID ab:type="Related_Person_Relationship_ID">Child</ab:ID>
</ab:Relation>
</ab:dependents>
<ab:dependents>
<ab:Dependent_SSN>888881001</ab:Dependent_SSN>
<ab:Dependent_ID>1032D-4</ab:Dependent_ID>
<ab:Relation ab:Descriptor="Child">
<ab:ID ab:type="Related_Person_Relationship_ID">Child</ab:ID>
</ab:Relation>
</ab:dependents>
</ab:Report_Entry>
어떤 조언을 주셔서 감사합니다!
마틴, 감사합니다. 나는 입력 함수의 타이핑에 접근하는 방법을 확신하지만, 나는 그것을 연구 할 수있다. 제안을 시도했지만 다음과 같은 오류가 발생했습니다 : ** 엔진 이름 : Saxon-PE 9.3.0.5 심각도 : 치명적 설명 앞의 '/'는 컨텍스트 항목이 포함 된 트리의 루트 노드를 선택할 수 없습니다. 컨텍스트 항목이 정의되지 않았습니다 ** –
경로 자체는 더 이상 오류가 아니지만 함수 내부에서 사용하려고하면 오류가 발생합니다. 함수에 매개 변수로 노드를 전달하고 해당 노드를 기준으로 경로를 작성해야합니다. xsl : param name = "EE_SSN"as = "xs : string"/> xsl : function>'을 참조하십시오. 다시 이것은 개념적 수정이지 기능을 수정하려는 시도는 아닙니다. –