| 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397398399400401402403404405406407408409410411412413414415416417418419420421422423424425426427428429430431432433434435436437438439440441442443444445446447448449450451452453454455456457458459460461462463464465466467468469470471472473474475476477478479480 |
- <?xml version="1.0" encoding="UTF-8"?>
- <xsl:stylesheet xmlns:xsl="http://www.w3.org/1999/XSL/Transform"
- xmlns:xs="http://www.w3.org/2001/XMLSchema"
- xmlns:Benford="https://pl.wikipedia.org/wiki/Rozkład_Benforda"
- xmlns:system_cache__dita="http://biuro.biall-net.pl/xmlschema_procesy5/default_db_xml_cache/dita.xsd"
- exclude-result-prefixes="xs"
- version="2.0">
- <!-- Template for analysis of https://pl.wikipedia.org/wiki/Rozkład_Benforda
- use this example to construct
-
-
- <Benford:table>
- <xsl:attribute name="Benford:year" select="."/>
- <xsl:attribute name="Benford:subject" select="$Osoba"/>
- <xsl:for-each select="$BI_audit_ENERGA_RUM_UMOWY_fix//default_db:BI_audit_ENERGA_RUM_UMOWY[ lower-case(default_db:Osoba_merytoryczna___nazwisko_i_imie) = lower-case($Osoba) and Data_zawarcia.rok = $rok_cur and not(Wartosc = '0' )]">
- <Benford:value><xsl:value-of select="substring( Wartosc,1,1)"/></Benford:value>
- </xsl:for-each>
- </Benford:table>
-
- than to analyze:
- <xsl:if test="$Benford:table//Benford:value">
- <xsl:apply-templates mode="Benford:table_analys" select="$Benford:table"/>
- </xsl:if>
-
- expect:
-
- <Benford:table_analys_exceed Benford:year="2012"
- Benford:subject="Jan Npwak"
- Benford:digit="8"
- Benford:true.current.dig="5"
- Benford:current.dig.ratio="16"
- Benford:current.dig.test.fault="11"
- Benford:table_analys.dig.all.sum="37"/>
-
- or:
-
- <Benford:table Benford:year="2011"
- Benford:subject="Jan Nowak"
- Benford:use_wider_period="#41 $Benford:table_analys not complete all numnbers used - use bigger period">
- <Benford:value>8</Benford:value>
- <Benford:value>5</Benford:value>
- <Benford:value>0</Benford:value>
- <Benford:value>0</Benford:value>
- <Benford:value>6</Benford:value>
- <Benford:value>0</Benford:value>
- <Benford:value>1</Benford:value>
- <Benford:value>1</Benford:value>
- <Benford:value>6</Benford:value>
- <Benford:value>8</Benford:value>
- <Benford:value>8</Benford:value>
- <Benford:value>8</Benford:value>
- <Benford:value>9</Benford:value>
- <Benford:value>0</Benford:value>
- <Benford:value>0</Benford:value>
- <Benford:value>6</Benford:value>
- <Benford:value>0</Benford:value>
- <Benford:value>0</Benford:value>
- <Benford:value>0</Benford:value>
- <Benford:value>0</Benford:value>
- <Benford:value>0</Benford:value>
- </Benford:table>
-
- which should be analyzed more wider - TODO example:
- -->
-
- <xsl:param name="Benford:true.tolerance" select="10"/>
- <xsl:param name="Benford:true.minimal_records" select="20"/>
-
- <xsl:variable name="Benford:true">
- <Benford:true>
- <Benford:table_analys.dig Benford:digit="1" Benford:digit.occurs="{xs:double(30.1)}"/>
- <Benford:table_analys.dig Benford:digit="2" Benford:digit.occurs="{xs:double(17.6)}"/>
- <Benford:table_analys.dig Benford:digit="3" Benford:digit.occurs="{xs:double(12.5)}"/>
- <Benford:table_analys.dig Benford:digit="4" Benford:digit.occurs="{xs:double(9.7)}"/>
- <Benford:table_analys.dig Benford:digit="5" Benford:digit.occurs="{xs:double(7.9)}"/>
- <Benford:table_analys.dig Benford:digit="6" Benford:digit.occurs="{xs:double(6.7)}"/>
- <Benford:table_analys.dig Benford:digit="7" Benford:digit.occurs="{xs:double(5.8)}"/>
- <Benford:table_analys.dig Benford:digit="8" Benford:digit.occurs="{xs:double(5.1)}"/>
- <Benford:table_analys.dig Benford:digit="9" Benford:digit.occurs="{xs:double(4.6)}"/>
- </Benford:true>
- </xsl:variable>
-
-
-
- <xsl:template mode="Benford:table_analys" match="Benford:table">
- <xsl:variable name="Benford:table" select="."/>
- <!--<xsl:copy-of select="$Benford:table"></xsl:copy-of>-->
- <xsl:variable name="Benford:table_analys">
- <Benford:table_analys>
- <xsl:copy-of select="@*"/>
- <xsl:for-each select="1 to 9">
- <Benford:table_analys.dig>
- <xsl:attribute name="Benford:digit" select="."/>
- <xsl:attribute name="Benford:digit.occurs" select="count($Benford:table//Benford:value[ number(text()) = current()])"/>
- </Benford:table_analys.dig>
- </xsl:for-each>
- </Benford:table_analys>
- </xsl:variable>
-
- <xsl:choose>
- <xsl:when test="$Benford:table_analys//Benford:table_analys.dig[@Benford:digit.occurs = 0 ] and sum($Benford:table_analys//Benford:table_analys.dig/@Benford:digit.occurs) < $Benford:true.minimal_records ">
- <xsl:comment>#41 $Benford:table_analys not complete all numnbers used - use bigger period</xsl:comment>
- <Benford:table>
- <xsl:copy-of select="$Benford:table/@*"/>
- <xsl:attribute name="Benford:use_wider_period" select="'#41 $Benford:table_analys not complete all numnbers used - use bigger period'"/>
- <xsl:copy-of select="*"/>
- </Benford:table>
- </xsl:when>
- <xsl:when test="$Benford:table_analys//Benford:table_analys.dig[@Benford:digit.occurs = 0 ] ">
- <xsl:comment>#110 nie ma wszystkich cyfr, trzeba to zaznaczyc i inaczej analizowac - tylko zwiekszone liczby</xsl:comment>
- <xsl:variable name="Benford:table_analys.dig.all.sum" select="sum($Benford:table_analys//Benford:table_analys.dig/@Benford:digit.occurs)"/>
- <xsl:for-each select="$Benford:table_analys//Benford:table_analys.dig">
- <xsl:variable name="Benford:true.current.dig" select="$Benford:true//Benford:table_analys.dig[number(@Benford:digit) = current()/number(@Benford:digit)]/@Benford:digit.occurs" />
- <xsl:variable name="Benford:current.dig.ratio" select="number(@Benford:digit.occurs) div number($Benford:table_analys.dig.all.sum) * 100" />
- <xsl:variable name="Benford:current.dig.test.fault" select="number($Benford:current.dig.ratio) - number($Benford:true.current.dig)" />
- <xsl:choose>
- <xsl:when test=" number($Benford:current.dig.test.fault) > number($Benford:true.tolerance) ">
- <Benford:table_analys_exceed>
- <xsl:copy-of select="$Benford:table/@*"/>
- <xsl:attribute name="Benford:digit" select="@Benford:digit"/>
- <xsl:attribute name="Benford:true.current.dig" select="round($Benford:true.current.dig)"/>
- <xsl:attribute name="Benford:current.dig.ratio" select="round($Benford:current.dig.ratio)"/>
- <xsl:attribute name="Benford:current.dig.test.fault" select="round($Benford:current.dig.test.fault)"/>
- <xsl:attribute name="Benford:table_analys.dig.all.sum" select="$Benford:table_analys.dig.all.sum"/>
- <xsl:attribute name="Benford:current.dig.test.fault.rel" select="number($Benford:current.dig.ratio) - number($Benford:true.current.dig)"/>
- </Benford:table_analys_exceed>
- </xsl:when>
- </xsl:choose>
- </xsl:for-each>
- </xsl:when>
- <xsl:otherwise>
- <xsl:variable name="Benford:table_analys.dig.all.sum" select="sum($Benford:table_analys//Benford:table_analys.dig/@Benford:digit.occurs)"/>
- <xsl:for-each select="$Benford:table_analys//Benford:table_analys.dig">
- <xsl:variable name="Benford:true.current.dig" select="$Benford:true//Benford:table_analys.dig[number(@Benford:digit) = current()/number(@Benford:digit)]/@Benford:digit.occurs" />
- <xsl:variable name="Benford:current.dig.ratio" select="number(@Benford:digit.occurs) div number($Benford:table_analys.dig.all.sum) * 100" />
- <xsl:variable name="Benford:current.dig.test.fault" select="abs(number($Benford:current.dig.ratio) - number($Benford:true.current.dig))" />
- <xsl:choose>
- <xsl:when test=" number($Benford:current.dig.test.fault) > number($Benford:true.tolerance) ">
- <Benford:table_analys_exceed>
- <xsl:copy-of select="$Benford:table/@*"/>
- <xsl:attribute name="Benford:digit" select="@Benford:digit"/>
- <xsl:attribute name="Benford:true.current.dig" select="round($Benford:true.current.dig)"/>
- <xsl:attribute name="Benford:current.dig.ratio" select="round($Benford:current.dig.ratio)"/>
- <xsl:attribute name="Benford:current.dig.test.fault" select="round($Benford:current.dig.test.fault)"/>
- <xsl:attribute name="Benford:table_analys.dig.all.sum" select="$Benford:table_analys.dig.all.sum"/>
- <xsl:attribute name="Benford:current.dig.test.fault.rel" select="number($Benford:current.dig.ratio) - number($Benford:true.current.dig)"/>
- </Benford:table_analys_exceed>
- </xsl:when>
- </xsl:choose>
- </xsl:for-each>
- </xsl:otherwise>
- </xsl:choose>
- </xsl:template>
-
- <xsl:template match="*|text()|comment()" mode="system_cache__dita:topic"/>
-
- <!-- to generate dita topic based on Benford:table_analys_exceed - it will try to target data from parameter (deals etc)-->
- <xsl:template match="Benford:table_analys_exceed" mode="system_cache__dita:topic">
- <!-- input: <Benford:table_analys_exceed Benford:year="2012"
- Benford:subject="Jan Npwak"
- Benford:digit="8"
- Benford:true.current.dig="5"
- Benford:current.dig.ratio="16"
- Benford:current.dig.test.fault="11"
- Benford:table_analys.dig.all.sum="37"
- Benford:current.dig.test.fault.rel="-10"/>
- -->
- <xsl:param name="Benford:subject.xml" /> <!-- example "$BI_audit_ENERGA_RUM_UMOWY_fix//default_db:BI_audit_ENERGA_RUM_UMOWY" -->
- <xsl:param name="Benford:subject.value" /> <!-- to search against Benford:subject.xml for get value - example 'Wartosc' -->
-
- <xsl:param name="Benford:subject" /> <!-- example to search against Benford:subject.xml 'default_db:Osoba_merytoryczna___nazwisko_i_imie' -->
- <xsl:param name="Benford:year" /> <!-- to search against shorter period - example 'Data_zawarcia.rok' -->
- <xsl:param name="Benford:subject.description" /> <!-- to search against Benford:subject.xml for get description - example 'default_db:Przedmiot_umowy default_db:Kontrahenci' -->
-
- <xsl:param name="topic.id"/>
- <xsl:param name="simpletable.id"/>
- <xsl:param name="id" select="concat('topic__Benford_table_analys_exceed',generate-id())"/>
- <xsl:variable name="Benford:table_analys_exceed" select="."/>
-
- <topic id="{$id}" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
- Benford:digit="{@Benford:digit}"
- Benford:current.dig.test.fault="{@Benford:current.dig.test.fault}"
- Benford:current.dig.test.fault.rel="{@Benford:current.dig.test.fault.rel}"
- xsi:noNamespaceSchemaLocation="urn:oasis:names:tc:dita:xsd:topic.xsd">
-
- <xsl:message>#156 Wykryte anomalia Benford dla <xsl:value-of select="@Benford:subject"/> w <xsl:value-of select="@Benford:year"/> dla liczby <xsl:value-of select="@Benford:digit"/> przekroczone o <xsl:value-of select="@Benford:current.dig.test.fault"/>, liczone dla <xsl:value-of select="@Benford:table_analys.dig.all.sum"/> pozycji.</xsl:message>
- <xsl:choose>
- <xsl:when test="$Benford:subject.xml and $Benford:subject.value "><!--<xsl:when test="$Benford:subject.xml and $Benford:subject and $Benford:year and $Benford:subject.value and $Benford:subject.description">-->
- <title>Wykryte anomalia Benford dla <xsl:value-of select="@Benford:subject"/> w <xsl:value-of select="@Benford:year"/> dla liczby <xsl:value-of select="@Benford:digit"/> liczone dla <xsl:value-of select="@Benford:table_analys.dig.all.sum"/> pozycji.
- <!--Wartość: <xsl:value-of select="sum($Benford:subject.xml [ node()[name()=$Benford:subject] = $Benford:table_analys_exceed/@Benford:subject and substring(node()[name()=$Benford:subject.value],1,1)=$Benford:table_analys_exceed/@Benford:digit and node()[name()=$Benford:year]=$Benford:table_analys_exceed/@Benford:year ]/node()[name()=$Benford:subject.value])"/>-->
- Wartość: <xsl:value-of select="sum($Benford:subject.xml[substring(node()[name()=$Benford:subject.value],1,1)=$Benford:table_analys_exceed/@Benford:digit ] /node()[name()=$Benford:subject.value]) div 1000000"/> [mln]
- <xsl:if test="number(@Benford:current.dig.test.fault.rel) < 0"> - Za mało obiektów o <xsl:value-of select="@Benford:current.dig.test.fault"/> %</xsl:if>
- <xsl:if test="number(@Benford:current.dig.test.fault.rel) > 0"> - Przekroczenie ilości obiektów o <xsl:value-of select="@Benford:current.dig.test.fault"/> %</xsl:if>
- </title>
- <body>
- <p>
- <xsl:value-of select="@Benford:true.current.dig"/> - stała rozkładu dla liczby <xsl:value-of select="@Benford:digit"/>.
- </p>
- <p>
- <xsl:value-of select="@Benford:current.dig.test.fault.rel"/> % - o ile za dużo / za mało jest danych
- </p>
- <p>
- <xsl:value-of select="round(sum($Benford:subject.xml/node()[name()=$Benford:subject.value]) div 1000000)"/> [mln] - ogólna wartość transakcji
-
- </p>
- <p>
- <xsl:value-of select="count($Benford:subject.xml/node()[name()=$Benford:subject.value]) "/> - ogólna ilość transakcji
- </p>
- <p>
- <xsl:value-of select="round(sum($Benford:subject.xml[substring(node()[name()=$Benford:subject.value],1,1)=$Benford:table_analys_exceed/@Benford:digit ] /node()[name()=$Benford:subject.value]) div sum($Benford:subject.xml/node()[name()=$Benford:subject.value]) * 100 )"/> - % wartości trasnakcji z anomalią do ogółu (kwota)
- </p>
- <p>
- <xsl:value-of select="count($Benford:subject.xml[substring(node()[name()=$Benford:subject.value],1,1)=$Benford:table_analys_exceed/@Benford:digit ] /node()[name()=$Benford:subject.value]) div count($Benford:subject.xml/node()[name()=$Benford:subject.value]) * 100 "/> - % wartości trasnakcji z anomalią do ogółu (ilość)
- </p>
- <simpletable frame="all" relcolwidth="8* 1.0* 2*" id="topic__Benford_table_analys_exceed_simpletable_{ generate-id()}" > <!-- system_cache__dita:width_cols="auto" -->
- <sthead>
- <stentry>Dane obiektu </stentry>
- <stentry>Data</stentry>
- <stentry>Kwota</stentry>
- </sthead>
-
- <!--<xsl:for-each select="$Benford:subject.xml [ node()[name()=$Benford:subject] = $Benford:table_analys_exceed/@Benford:subject and substring(node()[name()=$Benford:subject.value],1,1)=$Benford:table_analys_exceed/@Benford:digit and node()[name()=$Benford:year]=$Benford:table_analys_exceed/@Benford:year ]">-->
- <xsl:for-each select="$Benford:subject.xml[substring(node()[name()=$Benford:subject.value],1,1)=$Benford:table_analys_exceed/@Benford:digit ]">
- <strow>
- <xsl:variable name="current" select="current()"/>
- <stentry>
- <!--<xsl:value-of select="current()/node()[name()='default_db:Numer_rejestrowy']"/>-->
- <xsl:for-each select=" tokenize($Benford:subject.description,' ')">
- <xsl:variable name="nname" select="."/>
- <!--<xsl:comment>#171 checking for name '<xsl:value-of select="$nname"/>'</xsl:comment>-->
- <p><xsl:value-of select="$nname"/>: <xsl:value-of select="$current//node()[name()=$nname]"/></p>
- </xsl:for-each>
- </stentry>
- <stentry><xsl:value-of select="current()/node()[name()=$Benford:year]"/></stentry>
- <stentry><xsl:value-of select="current()/node()[name()=$Benford:subject.value]"/></stentry>
- </strow>
- </xsl:for-each>
-
- </simpletable>
- </body>
- </xsl:when>
- <xsl:when test="$topic.id and $simpletable.id">
- <title>Wykryte anomalia Benford dla <xsl:value-of select="@Benford:subject"/> w <xsl:value-of select="@Benford:year"/> dla liczby <xsl:value-of select="@Benford:digit"/> przekroczone o <xsl:value-of select="@Benford:current.dig.test.fault"/>, liczone dla <xsl:value-of select="@Benford:table_analys.dig.all.sum"/> pozycji.</title>
- <body>
- <p><xsl:copy-of select="system_cache__dita:xref_2_topc($topic.id)"/></p>
- </body>
- </xsl:when>
- </xsl:choose>
-
- </topic>
- </xsl:template>
-
- <!-- to generate dita topic based on Benford:table - it will shows analyzed data-->
- <xsl:template match="Benford:table" mode="system_cache__dita:topic">
- <!-- input: <Benford:table_analys_exceed Benford:year="2012"
- Benford:subject="Jan Npwak"
- Benford:digit="8"
- Benford:true.current.dig="5"
- Benford:current.dig.ratio="16"
- Benford:current.dig.test.fault="11"
- Benford:table_analys.dig.all.sum="37"
- Benford:current.dig.test.fault.rel="-10"/>
- -->
- <xsl:param name="Benford:subject.xml" /> <!-- example "$BI_audit_ENERGA_RUM_UMOWY_fix//default_db:BI_audit_ENERGA_RUM_UMOWY" -->
- <xsl:param name="Benford:subject.value" /> <!-- to search against Benford:subject.xml for get value - example 'Wartosc' -->
-
- <xsl:param name="Benford:subject" /> <!-- example to search against Benford:subject.xml 'default_db:Osoba_merytoryczna___nazwisko_i_imie' -->
- <xsl:param name="Benford:year" /> <!-- to search against shorter period - example 'Data_zawarcia.rok' -->
- <xsl:param name="Benford:subject.description" /> <!-- to search against Benford:subject.xml for get description - example 'default_db:Przedmiot_umowy default_db:Kontrahenci' -->
-
- <xsl:param name="topic.id"/>
- <xsl:param name="simpletable.id"/>
- <xsl:param name="id" select="concat('topic__Benford_table_analys_not_exceed',generate-id())"/>
- <xsl:param name="Benford:force_raport" select="false()"/> <!-- default is to ignore when there is no anomaly - otherwise when true is to show analyzed data subject -->
- <xsl:variable name="Benford:table_analys_exceed" select="."/>
-
- <xsl:choose>
- <xsl:when test="$Benford:force_raport">
- <topic id="{$id}" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
- xsi:noNamespaceSchemaLocation="urn:oasis:names:tc:dita:xsd:topic.xsd">
- <title>Nie wykryto anomalii Benford dla <xsl:value-of select="@Benford:subject"/> w <xsl:value-of select="@Benford:year"/> dla liczby <xsl:value-of select="@Benford:digit"/> liczone dla <xsl:value-of select="count($Benford:subject.xml/node()[name()=$Benford:subject.value])"/> pozycji.
- <!--Wartość: <xsl:value-of select="sum($Benford:subject.xml [ node()[name()=$Benford:subject] = $Benford:table_analys_exceed/@Benford:subject and substring(node()[name()=$Benford:subject.value],1,1)=$Benford:table_analys_exceed/@Benford:digit and node()[name()=$Benford:year]=$Benford:table_analys_exceed/@Benford:year ]/node()[name()=$Benford:subject.value])"/>-->
- Wartość: <xsl:value-of select="sum($Benford:subject.xml[substring(node()[name()=$Benford:subject.value],1,1)=$Benford:table_analys_exceed/@Benford:digit ] /node()[name()=$Benford:subject.value]) div 1000000"/> [mln]
-
- </title>
- <body>
-
-
- <p>
- <xsl:value-of select="round(sum($Benford:subject.xml/node()[name()=$Benford:subject.value]) div 1000)"/> [tys] - ogólna wartość transakcji
-
- </p>
- <p>
- <xsl:value-of select="count($Benford:subject.xml/node()[name()=$Benford:subject.value]) "/> - ogólna ilość transakcji
- </p>
-
-
- <simpletable frame="all" relcolwidth="8* 2* 2*" id="topic__Benford_table_analys_not_exceed_simpletable_{ generate-id()}" > <!-- system_cache__dita:width_cols="auto" -->
- <sthead>
- <stentry>Dane obiektu </stentry>
- <stentry>Data</stentry>
- <stentry>Kwota</stentry>
- </sthead>
-
- <!--<debug.285.Benford.subject.xml>
- <xsl:copy-of select="$Benford:subject.xml"/>
- </debug.285.Benford.subject.xml>-->
- <!--<debug.285.Benford.subject.xml.count>
- <xsl:copy-of select="count($Benford:subject.xml//*)"/>
- </debug.285.Benford.subject.xml.count>
- <Benford:subject.value>
- <xsl:copy-of select="$Benford:subject.value"/>
- </Benford:subject.value>
- <Benford:year>
- <xsl:copy-of select="$Benford:year"/>
- </Benford:year>
- <Benford:subject.value>
- <xsl:copy-of select="$Benford:subject.value"/>
- </Benford:subject.value>
- <Benford:subject.description>
- <xsl:copy-of select="$Benford:subject.description"/>
- </Benford:subject.description>
- <Benford:force_raport>
- <xsl:copy-of select="$Benford:force_raport"/>
- </Benford:force_raport>
- -->
- <!--<xsl:for-each select="$Benford:subject.xml [ node()[name()=$Benford:subject] = $Benford:table_analys_exceed/@Benford:subject and substring(node()[name()=$Benford:subject.value],1,1)=$Benford:table_analys_exceed/@Benford:digit and node()[name()=$Benford:year]=$Benford:table_analys_exceed/@Benford:year ]">-->
- <xsl:for-each select="$Benford:subject.xml">
- <strow>
- <xsl:variable name="current" select="current()"/>
- <stentry>
- <!--<xsl:value-of select="current()/node()[name()='default_db:Numer_rejestrowy']"/>-->
- <xsl:for-each select=" tokenize($Benford:subject.description,' ')">
- <xsl:variable name="nname" select="."/>
- <!--<xsl:comment>#171 checking for name '<xsl:value-of select="$nname"/>'</xsl:comment>-->
- <p><xsl:value-of select="$nname"/>: <xsl:value-of select="$current//node()[name()=$nname]"/></p>
- </xsl:for-each>
- </stentry>
- <stentry><xsl:value-of select="current()/node()[name()=$Benford:year]"/></stentry>
- <stentry><xsl:value-of select="system_cache__dita:big_values_format(current()/node()[name()=$Benford:subject.value])"/></stentry>
- </strow>
- </xsl:for-each>
-
- </simpletable>
- </body>
- </topic>
- </xsl:when>
- <xsl:otherwise><xsl:comment>#348 suppressed raport by $Benford:force_raport=false()</xsl:comment></xsl:otherwise>
- </xsl:choose>
-
-
- </xsl:template>
-
- <xsl:template match="topichead" mode="Benford:ditamap_root.embedded_map">
- <xsl:apply-templates mode="Benford:ditamap_root.embedded_map"/>
- </xsl:template>
-
- <xsl:template match="topic" mode="Benford:ditamap_root.embedded_map">
- <xsl:message>#197 found topic <xsl:value-of select="@id"/></xsl:message>
- <xsl:apply-templates mode="Benford:ditamap_root.embedded_map.topic">
- <xsl:with-param name="topic.id" select="@id"/>
- </xsl:apply-templates>
- </xsl:template>
-
- <xsl:template match="body|p" mode="Benford:ditamap_root.embedded_map.topic">
- <xsl:param name="topic.id" required="yes"/>
- <xsl:apply-templates mode="Benford:ditamap_root.embedded_map.topic.body">
- <xsl:with-param name="topic.id" select="$topic.id"/>
- </xsl:apply-templates>
- </xsl:template>
-
- <!--<xsl:template match="lq" mode="Benford:ditamap_root.embedded_map.topic.body">
- <xsl:param name="topic.id" required="yes"/>
- <p>
- <xsl:apply-templates mode="Benford:ditamap_root.embedded_map.topic.body">
- <xsl:with-param name="topic.id" select="$topic.id"/>
- </xsl:apply-templates>
- </p>
- </xsl:template>-->
-
- <xsl:template match="simpletable" mode="Benford:ditamap_root.embedded_map.topic.body">
- <xsl:param name="topic.id" required="yes"/>
- <xsl:apply-templates mode="Benford:ditamap_root.embedded_map.topic.body.simpletable">
- <xsl:with-param name="topic.id" select="$topic.id"/>
- <xsl:with-param name="simpletable.id" select="@id"/>
- </xsl:apply-templates>
- </xsl:template>
-
- <xsl:template match="strow|stentry" mode="Benford:ditamap_root.embedded_map.topic.body.simpletable">
- <xsl:param name="topic.id" required="yes"/>
- <xsl:param name="simpletable.id" required="yes"/>
- <xsl:apply-templates mode="Benford:ditamap_root.embedded_map.topic.body.simpletable">
- <xsl:with-param name="topic.id" select="$topic.id"/>
- <xsl:with-param name="simpletable.id" select="$simpletable.id"/>
- </xsl:apply-templates>
- </xsl:template>
-
-
-
- <xsl:template match="Benford:table_analys_exceed" mode="Benford:ditamap_root.embedded_map.topic.body.simpletable">
- <xsl:param name="topic.id" required="yes"/>
- <xsl:param name="simpletable.id" required="yes"/>
- <xsl:apply-templates mode="system_cache__dita:topic" select=".">
- <xsl:with-param name="topic.id" select="$topic.id"/>
- <xsl:with-param name="simpletable.id" select="$simpletable.id"/>
- </xsl:apply-templates>
- </xsl:template>
-
- <xsl:template match="*" mode="Benford:ditamap_root.embedded_map">
- <xsl:apply-templates mode="Benford:ditamap_root.embedded_map"/>
- </xsl:template>
-
- <xsl:template match="text()|comment()" mode="Benford:ditamap_root.embedded_map"/>
-
-
-
-
- <xsl:template match="*" mode="Benford:ditamap_root.embedded_map.body.topic.cleanup" >
- <xsl:element name="{name()}">
- <xsl:copy-of select="@*"/>
- <xsl:apply-templates mode="Benford:ditamap_root.embedded_map.body.topic.cleanup"/>
- </xsl:element>
- </xsl:template>
-
- <xsl:template match="@*" mode="Benford:ditamap_root.embedded_map.body.topic.cleanup">
- <xsl:copy-of select="."/>
- </xsl:template>
-
- <xsl:template match="@system_cache__dita:bypass_rows_empty|@system_cache__dita:bypass_rows_with_zero" mode="Benford:ditamap_root.embedded_map.body.topic.cleanup"/>
-
-
-
- <xsl:template match="simpletable" mode="Benford:ditamap_root.embedded_map.body.topic.cleanup" >
- <xsl:element name="{name()}">
- <xsl:apply-templates select="@*" mode="Benford:ditamap_root.embedded_map.body.topic.cleanup"/>
- <xsl:apply-templates mode="Benford:ditamap_root.embedded_map.body.topic.cleanup.simpletable"/>
- </xsl:element>
- </xsl:template>
-
- <xsl:template match="strow|stentry|sthead|xref" mode="Benford:ditamap_root.embedded_map.body.topic.cleanup.simpletable" >
- <xsl:element name="{name()}">
- <xsl:copy-of select="@*"/>
- <xsl:apply-templates mode="Benford:ditamap_root.embedded_map.body.topic.cleanup.simpletable"/>
- </xsl:element>
- </xsl:template>
- <xsl:template match="topic" mode="Benford:ditamap_root.embedded_map.body.topic.cleanup.simpletable" >
- <xsl:copy-of select="system_cache__dita:xref_2_topc(@id,concat(' !(B',@Benford:digit,'/',round(@Benford:current.dig.test.fault.rel),')'))"/>
- </xsl:template>
-
- <xsl:template match="topic[not(@Benford:digit) or not(@Benford:current.dig.test.fault.rel)]" mode="Benford:ditamap_root.embedded_map.body.topic.cleanup.simpletable" >
- <xsl:copy-of select="system_cache__dita:xref_2_topc(@id,' (?)')"/>
- </xsl:template>
-
- <!--<xsl:template match="topic" mode="Benford:ditamap_root.embedded_map.body.topic.cleanup.simpletable"/>-->
-
- <xsl:template match="Benford:table|Benford:table_analys_exceed|Benford:value" mode="Benford:ditamap_root.embedded_map.body.topic.cleanup.simpletable" />
-
-
- <xsl:template match="*" mode="Benford:ditamap_root.embedded_map.body.topicref.topic">
- <xsl:for-each select=".//topic">
- <xsl:apply-templates select="." mode="system_cache__dita:xref.topic.result-document"/>
- </xsl:for-each>
- </xsl:template>
-
- <xsl:template match="*" mode="Benford:ditamap_root.embedded_map.body.topicref.topic.noref">
- <xsl:for-each select=".//topic">
- <xsl:apply-templates select="." mode="system_cache__dita:xref.topic.result-document.noref"/>
- </xsl:for-each>
- </xsl:template>
-
- <xsl:template mode="ditamap_root.embedded_map.body" match="@Benford:value"/>
- <xsl:template mode="system_cache__dita:xref.topic.result-document" match="@Benford:digit"/>
- <xsl:template mode="system_cache__dita:xref.topic.result-document" match="@Benford:current.dig.test.fault|@Benford:current.dig.test.fault.rel"/>
-
- <!--<xsl:template mode="table_cut" match="@Benford:value" />-->
-
- </xsl:stylesheet>
|