다른 XML 문서의 데이터를 필터링하는 데 도움이되는 문서를 작성하려고합니다. 예 :사용자 지정 마크 업 언어를 사용하여 XML 데이터 필터링
<document>
<filter>
<what>
<include>
<marital_staus/>
<ms>single</ms> <!--nog = no of groups-->
<include>
<memberofgroups/>
<gn>Football club</gn> <!--user is a member of this club-->
</include>
</include>
</what>
</filter>
<users>
<user>
<name>
<first>abc</first>
<last>xyz</last>
</name>
<dob>12/02/1987</dob>
<marital_status>married</marital_status>
<groups>
<member_of_group>Chess Club</member_of_group>
<member_of_group>Football club</member_of_group>
</groups>
</user>
<user>
<name>
<first>aaa</first>
<last>bbb</last>
</name>
<dob>14/03/1987</dob>
<marital_status>single</marital_status>
<groups>
<member_of_group>Chess Club</member_of_group>
<member_of_group>Football club</member_of_group>
</groups>
</user>
<user>
<name>
<first>fff</first>
<last>nnn</last>
</name>
<dob>12/6/1983</dob>
<marital_status>single</marital_status>
<groups>
<member_of_group>Chess Club</member_of_group>
<member_of_group>Cultural Association</member_of_group>
</groups>
</user>
</users>
</document>
내가 할 수있는이 코드를 먼저 선택하는 것입니다 원하는 것은, 축구 클럽 회원, 그리고 그 밖에있는 사용자는 단일있는 사용자를 선택했다. 하지만이 스타일 시트를 작성하는 방법을 알아낼 수 없습니다. 나는 이것을 썼다 :
<xsl:template name="temp">
<xsl:param name="a1"/>
<xsl:param name="pro"/>
<xsl:choose>
<xsl:when test="$pro = 'marital_status'">
<xsl:for-each select="/document/users/user">
<xsl:if test="marital_status=$a1">
<xsl:value-of select="."/>
</xsl:if>
</xsl:for-each>
</xsl:when>
<xsl:when test="$pro = 'memberofgroups'">
<xsl:for-each select="/document/users/user">
<xsl:for-each select="./groups/member_of_group">
<xsl:if test=".=$a1">
<xsl:value-of select="."/>
</xsl:if>
</xsl:for-each>
</xsl:for-each>
</xsl:when>
</xsl:choose>
</xsl:template>
<xsl:template match="include">
<xsl:call-template name="temp">
<xsl:with-param name="a1">
<xsl:apply-templates select="*[2]"/>
</xsl:with-param>
</xsl:call-template>
</xsl:template>
나는이 가정에서 올바른 값을 전달한다.
문제는 내가 독신 인 모든 사용자와 해당 특정 그룹의 구성원 인 모든 사용자를 얻습니다. 그러나 나는 또한 풋볼 클럽의 일원 인 단일 사용자를 원합니다. 스타일 시트를 하드 코딩하지 않기를 바랍니다. 왜냐하면 다른 요소를 기반으로 필터링을 수행하기를 원하기 때문입니다.
필터링 된 요소를 다음 XPath 표현식의 입력으로 사용할 수있는 방법으로 저장하는 방법을 알 수 없습니다. 또는 문서를 필터링하기위한 제약 조건을 작성하는 동안 실수를 저지르고 있습니다. 아니면 필터링을 위해 문서를 작성하는 다른 적절한 방법이있을 수 있습니까? 나는 너의 도움에 많이 감사 할 것이다.
이러한 템플릿을 호출하는 다른 언어를 사용하고 있습니까? –
아니요 ... 나는 xslt만을 사용하고 있습니다 ... 그리고 두 개의 요소 "필터"두 번째 "사용자"가있는 하나의 XML 문서가 있습니다 ... 사용자는 이름, dob 등의 일부 데이터 요소가 있습니다. 이 스타일 시트 또는 다른 적절한 태그를 사용하여 사용자 요소의 데이터를 필터링하는 필터 요소 – ashamim
소스 XML 문서를 제공하는 것을 잊었습니다. 질문을 편집하고 중요한 정보를 제공해주십시오. –