| | | | | | | | | | | | | | | | | | | | | |
<?xml version="1.0" standalone="no" encoding="windows-1252"?> |
<!-- Generated by ThunderDome XBRL - 03:47AM UTC 2020-09-09 --> |
<xsd:schema xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns:country="http://xbrl.sec.gov/country/2020-01-31" xmlns:currency="http://xbrl.sec.gov/currency/2020-01-31" xmlns:dei="http://xbrl.sec.gov/dei/2019-01-31" xmlns:exch="http://xbrl.sec.gov/exch/2020-01-31" xmlns:link="http://www.xbrl.org/2003/linkbase" xmlns:naics="http://xbrl.sec.gov/naics/2011-01-31" xmlns:nonnum="http://www.xbrl.org/dtr/type/non-numeric" xmlns:num="http://www.xbrl.org/dtr/type/numeric" xmlns:ppih="http://investors.permapipe.com/20200731" xmlns:sic="http://xbrl.sec.gov/sic/2020-01-31" xmlns:srt="http://fasb.org/srt/2020-01-31" xmlns:srt-types="http://fasb.org/srt-types/2020-01-31" xmlns:stpr="http://xbrl.sec.gov/stpr/2018-01-31" xmlns:us-gaap="http://fasb.org/us-gaap/2020-01-31" xmlns:us-types="http://fasb.org/us-types/2020-01-31" xmlns:xbrldt="http://xbrl.org/2005/xbrldt" xmlns:xbrli="http://www.xbrl.org/2003/instance" xmlns:xlink="http://www.w3.org/1999/xlink" attributeFormDefault="unqualified" elementFormDefault="qualified" targetNamespace="http://investors.permapipe.com/20200731"> |
| <xsd:import namespace="http://xbrl.sec.gov/sic/2020-01-31" schemaLocation="https://xbrl.sec.gov/sic/2020/sic-2020-01-31.xsd"/> |
| <xsd:import namespace="http://xbrl.sec.gov/exch/2020-01-31" schemaLocation="https://xbrl.sec.gov/exch/2020/exch-2020-01-31.xsd"/> |
| <xsd:import namespace="http://xbrl.sec.gov/naics/2011-01-31" schemaLocation="http://xbrl.sec.gov/naics/2011/naics-2011-01-31.xsd"/> |
| <xsd:import namespace="http://www.xbrl.org/2003/instance" schemaLocation="http://www.xbrl.org/2003/xbrl-instance-2003-12-31.xsd"/> |
| <xsd:import namespace="http://fasb.org/us-gaap/2020-01-31" schemaLocation="http://xbrl.fasb.org/us-gaap/2020/elts/us-gaap-2020-01-31.xsd"/> |
| <xsd:import namespace="http://xbrl.sec.gov/country/2020-01-31" schemaLocation="https://xbrl.sec.gov/country/2020/country-2020-01-31.xsd"/> |
| <xsd:import namespace="http://fasb.org/us-types/2020-01-31" schemaLocation="http://xbrl.fasb.org/us-gaap/2020/elts/us-types-2020-01-31.xsd"/> |
| <xsd:import namespace="http://www.xbrl.org/dtr/type/non-numeric" schemaLocation="http://www.xbrl.org/dtr/type/nonNumeric-2009-12-16.xsd"/> |
| <xsd:import namespace="http://xbrl.sec.gov/stpr/2018-01-31" schemaLocation="https://xbrl.sec.gov/stpr/2018/stpr-2018-01-31.xsd"/> |
| <xsd:import namespace="http://xbrl.org/2005/xbrldt" schemaLocation="http://www.xbrl.org/2005/xbrldt-2005.xsd"/> |
| <xsd:import namespace="http://www.xbrl.org/dtr/type/numeric" schemaLocation="http://www.xbrl.org/dtr/type/numeric-2009-12-16.xsd"/> |
| <xsd:import namespace="http://xbrl.sec.gov/currency/2020-01-31" schemaLocation="https://xbrl.sec.gov/currency/2020/currency-2020-01-31.xsd"/> |
| <xsd:import namespace="http://fasb.org/srt-types/2020-01-31" schemaLocation="http://xbrl.fasb.org/srt/2020/elts/srt-types-2020-01-31.xsd"/> |
| <xsd:import namespace="http://www.xbrl.org/2009/role/negated" schemaLocation="http://www.xbrl.org/lrr/role/negated-2009-12-16.xsd"/> |
| <xsd:import namespace="http://fasb.org/srt/2020-01-31" schemaLocation="http://xbrl.fasb.org/srt/2020/elts/srt-2020-01-31.xsd"/> |
| <xsd:annotation> |
| | <xsd:appinfo> |
| | | <link:linkbaseRef xlink:arcrole="http://www.w3.org/1999/xlink/properties/linkbase" xlink:href="ppih-20200731_lab.xml" xlink:role="http://www.xbrl.org/2003/role/labelLinkbaseRef" xlink:type="simple"/> |
| | | <link:linkbaseRef xlink:arcrole="http://www.w3.org/1999/xlink/properties/linkbase" xlink:href="ppih-20200731_cal.xml" xlink:role="http://www.xbrl.org/2003/role/calculationLinkbaseRef" xlink:type="simple"/> |
| | | <link:linkbaseRef xlink:arcrole="http://www.w3.org/1999/xlink/properties/linkbase" xlink:href="ppih-20200731_def.xml" xlink:role="http://www.xbrl.org/2003/role/definitionLinkbaseRef" xlink:type="simple"/> |
| | | <link:linkbaseRef xlink:arcrole="http://www.w3.org/1999/xlink/properties/linkbase" xlink:href="ppih-20200731_pre.xml" xlink:role="http://www.xbrl.org/2003/role/presentationLinkbaseRef" xlink:type="simple"/> |
| | | <link:roleType id="statement-document-and-entity-information" roleURI="http://investors.permapipe.com/20200731/role/statement-document-and-entity-information"> |
| <link:definition xmlns="http://www.xbrl.org/2003/linkbase"> 000 - Document - Document And Entity Information </link:definition> |
| <link:usedOn> link:calculationLink </link:usedOn> |
| <link:usedOn> link:definitionLink </link:usedOn> |
| <link:usedOn> link:presentationLink </link:usedOn> |
| </link:roleType> |
| | | <link:roleType id="statement-consolidated-statements-of-operations-unaudited" roleURI="http://investors.permapipe.com/20200731/role/statement-consolidated-statements-of-operations-unaudited"> |
| <link:definition xmlns="http://www.xbrl.org/2003/linkbase"> 001 - Statement - Consolidated Statements of Operations (Unaudited) </link:definition> |
| <link:usedOn> link:calculationLink </link:usedOn> |
| <link:usedOn> link:definitionLink </link:usedOn> |
| <link:usedOn> link:presentationLink </link:usedOn> |
| </link:roleType> |
| | | <link:roleType id="statement-consolidated-statements-of-comprehensive-income-loss-unaudited" roleURI="http://investors.permapipe.com/20200731/role/statement-consolidated-statements-of-comprehensive-income-loss-unaudited"> |
| <link:definition xmlns="http://www.xbrl.org/2003/linkbase"> 002 - Statement - Consolidated Statements of Comprehensive Income (Loss) (Unaudited) </link:definition> |
| <link:usedOn> link:calculationLink </link:usedOn> |
| <link:usedOn> link:definitionLink </link:usedOn> |
| <link:usedOn> link:presentationLink </link:usedOn> |
| </link:roleType> |
| | | <link:roleType id="statement-consolidated-balance-sheets-current-period-unaudited" roleURI="http://investors.permapipe.com/20200731/role/statement-consolidated-balance-sheets-current-period-unaudited"> |
| <link:definition xmlns="http://www.xbrl.org/2003/linkbase"> 003 - Statement - Consolidated Balance Sheets (Current Period Unaudited) </link:definition> |
| <link:usedOn> link:calculationLink </link:usedOn> |
| <link:usedOn> link:definitionLink </link:usedOn> |
| <link:usedOn> link:presentationLink </link:usedOn> |
| </link:roleType> |
| | | <link:roleType id="statement-consolidated-balance-sheets-current-period-unaudited-parentheticals" roleURI="http://investors.permapipe.com/20200731/role/statement-consolidated-balance-sheets-current-period-unaudited-parentheticals"> |
| <link:definition xmlns="http://www.xbrl.org/2003/linkbase"> 004 - Statement - Consolidated Balance Sheets (Current Period Unaudited) (Parentheticals) </link:definition> |
| <link:usedOn> link:calculationLink </link:usedOn> |
| <link:usedOn> link:definitionLink </link:usedOn> |
| <link:usedOn> link:presentationLink </link:usedOn> |
| </link:roleType> |
| | | <link:roleType id="statement-consolidated-statements-of-stockholders-equity-unaudited" roleURI="http://investors.permapipe.com/20200731/role/statement-consolidated-statements-of-stockholders-equity-unaudited"> |
| <link:definition xmlns="http://www.xbrl.org/2003/linkbase"> 005 - Statement - Consolidated Statements of Stockholders' Equity (Unaudited) </link:definition> |
| <link:usedOn> link:calculationLink </link:usedOn> |
| <link:usedOn> link:definitionLink </link:usedOn> |
| <link:usedOn> link:presentationLink </link:usedOn> |
| </link:roleType> |
| | | <link:roleType id="statement-consolidated-statements-of-cash-flows-unaudited" roleURI="http://investors.permapipe.com/20200731/role/statement-consolidated-statements-of-cash-flows-unaudited"> |
| <link:definition xmlns="http://www.xbrl.org/2003/linkbase"> 006 - Statement - Consolidated Statements of Cash Flows (Unaudited) </link:definition> |
| <link:usedOn> link:calculationLink </link:usedOn> |
| <link:usedOn> link:definitionLink </link:usedOn> |
| <link:usedOn> link:presentationLink </link:usedOn> |
| </link:roleType> |
| | | <link:roleType id="statement-note-1-basis-of-presentation" roleURI="http://investors.permapipe.com/20200731/role/statement-note-1-basis-of-presentation"> |
| <link:definition xmlns="http://www.xbrl.org/2003/linkbase"> 007 - Disclosure - Note 1 - Basis of Presentation </link:definition> |
| <link:usedOn> link:calculationLink </link:usedOn> |
| <link:usedOn> link:definitionLink </link:usedOn> |
| <link:usedOn> link:presentationLink </link:usedOn> |
| </link:roleType> |
| | | <link:roleType id="statement-note-2-business-segment-reporting" roleURI="http://investors.permapipe.com/20200731/role/statement-note-2-business-segment-reporting"> |
| <link:definition xmlns="http://www.xbrl.org/2003/linkbase"> 008 - Disclosure - Note 2 - Business Segment Reporting </link:definition> |
| <link:usedOn> link:calculationLink </link:usedOn> |
| <link:usedOn> link:definitionLink </link:usedOn> |
| <link:usedOn> link:presentationLink </link:usedOn> |
| </link:roleType> |
| | | <link:roleType id="statement-note-3-accounts-receivable" roleURI="http://investors.permapipe.com/20200731/role/statement-note-3-accounts-receivable"> |
| <link:definition xmlns="http://www.xbrl.org/2003/linkbase"> 009 - Disclosure - Note 3 - Accounts Receivable </link:definition> |
| <link:usedOn> link:calculationLink </link:usedOn> |
| <link:usedOn> link:definitionLink </link:usedOn> |
| <link:usedOn> link:presentationLink </link:usedOn> |
| </link:roleType> |
| | | <link:roleType id="statement-note-4-revenue-recognition" roleURI="http://investors.permapipe.com/20200731/role/statement-note-4-revenue-recognition"> |
| <link:definition xmlns="http://www.xbrl.org/2003/linkbase"> 010 - Disclosure - Note 4 - Revenue Recognition </link:definition> |
| <link:usedOn> link:calculationLink </link:usedOn> |
| <link:usedOn> link:definitionLink </link:usedOn> |
| <link:usedOn> link:presentationLink </link:usedOn> |
| </link:roleType> |
| | | <link:roleType id="statement-note-5-income-taxes" roleURI="http://investors.permapipe.com/20200731/role/statement-note-5-income-taxes"> |
| <link:definition xmlns="http://www.xbrl.org/2003/linkbase"> 011 - Disclosure - Note 5 - Income Taxes </link:definition> |
| <link:usedOn> link:calculationLink </link:usedOn> |
| <link:usedOn> link:definitionLink </link:usedOn> |
| <link:usedOn> link:presentationLink </link:usedOn> |
| </link:roleType> |
| | | <link:roleType id="statement-note-6-impairment-of-longlived-assets" roleURI="http://investors.permapipe.com/20200731/role/statement-note-6-impairment-of-longlived-assets"> |
| <link:definition xmlns="http://www.xbrl.org/2003/linkbase"> 012 - Disclosure - Note 6 - Impairment of Long-lived Assets </link:definition> |
| <link:usedOn> link:calculationLink </link:usedOn> |
| <link:usedOn> link:definitionLink </link:usedOn> |
| <link:usedOn> link:presentationLink </link:usedOn> |
| </link:roleType> |
| | | <link:roleType id="statement-note-7-stockbased-compensation" roleURI="http://investors.permapipe.com/20200731/role/statement-note-7-stockbased-compensation"> |
| <link:definition xmlns="http://www.xbrl.org/2003/linkbase"> 013 - Disclosure - Note 7 - Stock-based Compensation </link:definition> |
| <link:usedOn> link:calculationLink </link:usedOn> |
| <link:usedOn> link:definitionLink </link:usedOn> |
| <link:usedOn> link:presentationLink </link:usedOn> |
| </link:roleType> |
| | | <link:roleType id="statement-note-8-income-loss-per-share" roleURI="http://investors.permapipe.com/20200731/role/statement-note-8-income-loss-per-share"> |
| <link:definition xmlns="http://www.xbrl.org/2003/linkbase"> 014 - Disclosure - Note 8 - Income (Loss) Per Share </link:definition> |
| <link:usedOn> link:calculationLink </link:usedOn> |
| <link:usedOn> link:definitionLink </link:usedOn> |
| <link:usedOn> link:presentationLink </link:usedOn> |
| </link:roleType> |
| | | <link:roleType id="statement-note-9-debt" roleURI="http://investors.permapipe.com/20200731/role/statement-note-9-debt"> |
| <link:definition xmlns="http://www.xbrl.org/2003/linkbase"> 015 - Disclosure - Note 9 - Debt </link:definition> |
| <link:usedOn> link:calculationLink </link:usedOn> |
| <link:usedOn> link:definitionLink </link:usedOn> |
| <link:usedOn> link:presentationLink </link:usedOn> |
| </link:roleType> |
| | | <link:roleType id="statement-note-10-leases" roleURI="http://investors.permapipe.com/20200731/role/statement-note-10-leases"> |
| <link:definition xmlns="http://www.xbrl.org/2003/linkbase"> 016 - Disclosure - Note 10 - Leases </link:definition> |
| <link:usedOn> link:calculationLink </link:usedOn> |
| <link:usedOn> link:definitionLink </link:usedOn> |
| <link:usedOn> link:presentationLink </link:usedOn> |
| </link:roleType> |
| | | <link:roleType id="statement-note-11-restricted-cash" roleURI="http://investors.permapipe.com/20200731/role/statement-note-11-restricted-cash"> |
| <link:definition xmlns="http://www.xbrl.org/2003/linkbase"> 017 - Disclosure - Note 11 - Restricted Cash </link:definition> |
| <link:usedOn> link:calculationLink </link:usedOn> |
| <link:usedOn> link:definitionLink </link:usedOn> |
| <link:usedOn> link:presentationLink </link:usedOn> |
| </link:roleType> |
| | | <link:roleType id="statement-note-12-fair-value-" roleURI="http://investors.permapipe.com/20200731/role/statement-note-12-fair-value-"> |
| <link:definition xmlns="http://www.xbrl.org/2003/linkbase"> 018 - Disclosure - Note 12 - Fair Value </link:definition> |
| <link:usedOn> link:calculationLink </link:usedOn> |
| <link:usedOn> link:definitionLink </link:usedOn> |
| <link:usedOn> link:presentationLink </link:usedOn> |
| </link:roleType> |
| | | <link:roleType id="statement-note-13-recent-accounting-pronouncements-" roleURI="http://investors.permapipe.com/20200731/role/statement-note-13-recent-accounting-pronouncements-"> |
| <link:definition xmlns="http://www.xbrl.org/2003/linkbase"> 019 - Disclosure - Note 13 - Recent Accounting Pronouncements </link:definition> |
| <link:usedOn> link:calculationLink </link:usedOn> |
| <link:usedOn> link:definitionLink </link:usedOn> |
| <link:usedOn> link:presentationLink </link:usedOn> |
| </link:roleType> |
| | | <link:roleType id="statement-note-4-revenue-recognition-tables" roleURI="http://investors.permapipe.com/20200731/role/statement-note-4-revenue-recognition-tables"> |
| <link:definition xmlns="http://www.xbrl.org/2003/linkbase"> 020 - Disclosure - Note 4 - Revenue Recognition (Tables) </link:definition> |
| <link:usedOn> link:calculationLink </link:usedOn> |
| <link:usedOn> link:definitionLink </link:usedOn> |
| <link:usedOn> link:presentationLink </link:usedOn> |
| </link:roleType> |
| | | <link:roleType id="statement-note-6-impairment-of-longlived-assets-tables" roleURI="http://investors.permapipe.com/20200731/role/statement-note-6-impairment-of-longlived-assets-tables"> |
| <link:definition xmlns="http://www.xbrl.org/2003/linkbase"> 021 - Disclosure - Note 6 - Impairment of Long-lived Assets (Tables) </link:definition> |
| <link:usedOn> link:calculationLink </link:usedOn> |
| <link:usedOn> link:definitionLink </link:usedOn> |
| <link:usedOn> link:presentationLink </link:usedOn> |
| </link:roleType> |
| | | <link:roleType id="statement-note-7-stockbased-compensation-tables" roleURI="http://investors.permapipe.com/20200731/role/statement-note-7-stockbased-compensation-tables"> |
| <link:definition xmlns="http://www.xbrl.org/2003/linkbase"> 022 - Disclosure - Note 7 - Stock-based Compensation (Tables) </link:definition> |
| <link:usedOn> link:calculationLink </link:usedOn> |
| <link:usedOn> link:definitionLink </link:usedOn> |
| <link:usedOn> link:presentationLink </link:usedOn> |
| </link:roleType> |
| | | <link:roleType id="statement-note-8-income-loss-per-share-tables" roleURI="http://investors.permapipe.com/20200731/role/statement-note-8-income-loss-per-share-tables"> |
| <link:definition xmlns="http://www.xbrl.org/2003/linkbase"> 023 - Disclosure - Note 8 - Income (Loss) Per Share (Tables) </link:definition> |
| <link:usedOn> link:calculationLink </link:usedOn> |
| <link:usedOn> link:definitionLink </link:usedOn> |
| <link:usedOn> link:presentationLink </link:usedOn> |
| </link:roleType> |
| | | <link:roleType id="statement-note-10-leases-tables" roleURI="http://investors.permapipe.com/20200731/role/statement-note-10-leases-tables"> |
| <link:definition xmlns="http://www.xbrl.org/2003/linkbase"> 024 - Disclosure - Note 10 - Leases (Tables) </link:definition> |
| <link:usedOn> link:calculationLink </link:usedOn> |
| <link:usedOn> link:definitionLink </link:usedOn> |
| <link:usedOn> link:presentationLink </link:usedOn> |
| </link:roleType> |
| | | <link:roleType id="statement-note-11-restricted-cash-tables" roleURI="http://investors.permapipe.com/20200731/role/statement-note-11-restricted-cash-tables"> |
| <link:definition xmlns="http://www.xbrl.org/2003/linkbase"> 025 - Disclosure - Note 11 - Restricted Cash (Tables) </link:definition> |
| <link:usedOn> link:calculationLink </link:usedOn> |
| <link:usedOn> link:definitionLink </link:usedOn> |
| <link:usedOn> link:presentationLink </link:usedOn> |
| </link:roleType> |
| | | <link:roleType id="statement-note-2-business-segment-reporting-details-textual" roleURI="http://investors.permapipe.com/20200731/role/statement-note-2-business-segment-reporting-details-textual"> |
| <link:definition xmlns="http://www.xbrl.org/2003/linkbase"> 026 - Disclosure - Note 2 - Business Segment Reporting (Details Textual) </link:definition> |
| <link:usedOn> link:calculationLink </link:usedOn> |
| <link:usedOn> link:definitionLink </link:usedOn> |
| <link:usedOn> link:presentationLink </link:usedOn> |
| </link:roleType> |
| | | <link:roleType id="statement-note-3-accounts-receivable-details-textual" roleURI="http://investors.permapipe.com/20200731/role/statement-note-3-accounts-receivable-details-textual"> |
| <link:definition xmlns="http://www.xbrl.org/2003/linkbase"> 027 - Disclosure - Note 3 - Accounts Receivable (Details Textual) </link:definition> |
| <link:usedOn> link:calculationLink </link:usedOn> |
| <link:usedOn> link:definitionLink </link:usedOn> |
| <link:usedOn> link:presentationLink </link:usedOn> |
| </link:roleType> |
| | | <link:roleType id="statement-note-4-revenue-recognition-details-textual" roleURI="http://investors.permapipe.com/20200731/role/statement-note-4-revenue-recognition-details-textual"> |
| <link:definition xmlns="http://www.xbrl.org/2003/linkbase"> 028 - Disclosure - Note 4 - Revenue Recognition (Details Textual) </link:definition> |
| <link:usedOn> link:calculationLink </link:usedOn> |
| <link:usedOn> link:definitionLink </link:usedOn> |
| <link:usedOn> link:presentationLink </link:usedOn> |
| </link:roleType> |
| | | <link:roleType id="statement-note-4-revenue-recognition-revenues-by-revenue-class-details" roleURI="http://investors.permapipe.com/20200731/role/statement-note-4-revenue-recognition-revenues-by-revenue-class-details"> |
| <link:definition xmlns="http://www.xbrl.org/2003/linkbase"> 029 - Disclosure - Note 4 - Revenue Recognition - Revenues by Revenue Class (Details) </link:definition> |
| <link:usedOn> link:calculationLink </link:usedOn> |
| <link:usedOn> link:definitionLink </link:usedOn> |
| <link:usedOn> link:presentationLink </link:usedOn> |
| </link:roleType> |
| | | <link:roleType id="statement-note-4-revenue-recognition-contract-with-customer-asset-and-liability-details" roleURI="http://investors.permapipe.com/20200731/role/statement-note-4-revenue-recognition-contract-with-customer-asset-and-liability-details"> |
| <link:definition xmlns="http://www.xbrl.org/2003/linkbase"> 030 - Disclosure - Note 4 - Revenue Recognition - Contract With Customer, Asset and Liability (Details) </link:definition> |
| <link:usedOn> link:calculationLink </link:usedOn> |
| <link:usedOn> link:definitionLink </link:usedOn> |
| <link:usedOn> link:presentationLink </link:usedOn> |
| </link:roleType> |
| | | <link:roleType id="statement-note-5-income-taxes-details-textual" roleURI="http://investors.permapipe.com/20200731/role/statement-note-5-income-taxes-details-textual"> |
| <link:definition xmlns="http://www.xbrl.org/2003/linkbase"> 031 - Disclosure - Note 5 - Income Taxes (Details Textual) </link:definition> |
| <link:usedOn> link:calculationLink </link:usedOn> |
| <link:usedOn> link:definitionLink </link:usedOn> |
| <link:usedOn> link:presentationLink </link:usedOn> |
| </link:roleType> |
| | | <link:roleType id="statement-note-6-impairment-of-longlived-assets-details-textual" roleURI="http://investors.permapipe.com/20200731/role/statement-note-6-impairment-of-longlived-assets-details-textual"> |
| <link:definition xmlns="http://www.xbrl.org/2003/linkbase"> 032 - Disclosure - Note 6 - Impairment of Long-lived Assets (Details Textual) </link:definition> |
| <link:usedOn> link:calculationLink </link:usedOn> |
| <link:usedOn> link:definitionLink </link:usedOn> |
| <link:usedOn> link:presentationLink </link:usedOn> |
| </link:roleType> |
| | | <link:roleType id="statement-note-6-impairment-of-longlived-assets-goodwill-details" roleURI="http://investors.permapipe.com/20200731/role/statement-note-6-impairment-of-longlived-assets-goodwill-details"> |
| <link:definition xmlns="http://www.xbrl.org/2003/linkbase"> 033 - Disclosure - Note 6 - Impairment of Long-lived Assets - Goodwill (Details) </link:definition> |
| <link:usedOn> link:calculationLink </link:usedOn> |
| <link:usedOn> link:definitionLink </link:usedOn> |
| <link:usedOn> link:presentationLink </link:usedOn> |
| </link:roleType> |
| | | <link:roleType id="statement-note-7-stockbased-compensation-details-textual" roleURI="http://investors.permapipe.com/20200731/role/statement-note-7-stockbased-compensation-details-textual"> |
| <link:definition xmlns="http://www.xbrl.org/2003/linkbase"> 034 - Disclosure - Note 7 - Stock-based Compensation (Details Textual) </link:definition> |
| <link:usedOn> link:calculationLink </link:usedOn> |
| <link:usedOn> link:definitionLink </link:usedOn> |
| <link:usedOn> link:presentationLink </link:usedOn> |
| </link:roleType> |
| | | <link:roleType id="statement-note-7-stockbased-compensation-stockbased-compensation-expense-details" roleURI="http://investors.permapipe.com/20200731/role/statement-note-7-stockbased-compensation-stockbased-compensation-expense-details"> |
| <link:definition xmlns="http://www.xbrl.org/2003/linkbase"> 035 - Disclosure - Note 7 - Stock-based Compensation - Stock-based Compensation Expense (Details) </link:definition> |
| <link:usedOn> link:calculationLink </link:usedOn> |
| <link:usedOn> link:definitionLink </link:usedOn> |
| <link:usedOn> link:presentationLink </link:usedOn> |
| </link:roleType> |
| | | <link:roleType id="statement-note-7-stockbased-compensation-stock-option-activity-details" roleURI="http://investors.permapipe.com/20200731/role/statement-note-7-stockbased-compensation-stock-option-activity-details"> |
| <link:definition xmlns="http://www.xbrl.org/2003/linkbase"> 036 - Disclosure - Note 7 - Stock-based Compensation - Stock Option Activity (Details) </link:definition> |
| <link:usedOn> link:calculationLink </link:usedOn> |
| <link:usedOn> link:definitionLink </link:usedOn> |
| <link:usedOn> link:presentationLink </link:usedOn> |
| </link:roleType> |
| | | <link:roleType id="statement-note-7-stockbased-compensation-unvested-option-activity-details" roleURI="http://investors.permapipe.com/20200731/role/statement-note-7-stockbased-compensation-unvested-option-activity-details"> |
| <link:definition xmlns="http://www.xbrl.org/2003/linkbase"> 037 - Disclosure - Note 7 - Stock-based Compensation - Unvested Option Activity (Details) </link:definition> |
| <link:usedOn> link:calculationLink </link:usedOn> |
| <link:usedOn> link:definitionLink </link:usedOn> |
| <link:usedOn> link:presentationLink </link:usedOn> |
| </link:roleType> |
| | | <link:roleType id="statement-note-7-stockbased-compensation-restricted-stock-activity-details" roleURI="http://investors.permapipe.com/20200731/role/statement-note-7-stockbased-compensation-restricted-stock-activity-details"> |
| <link:definition xmlns="http://www.xbrl.org/2003/linkbase"> 038 - Disclosure - Note 7 - Stock-based Compensation - Restricted Stock Activity (Details) </link:definition> |
| <link:usedOn> link:calculationLink </link:usedOn> |
| <link:usedOn> link:definitionLink </link:usedOn> |
| <link:usedOn> link:presentationLink </link:usedOn> |
| </link:roleType> |
| | | <link:roleType id="statement-note-8-income-loss-per-share-summary-of-earnings-per-share-details" roleURI="http://investors.permapipe.com/20200731/role/statement-note-8-income-loss-per-share-summary-of-earnings-per-share-details"> |
| <link:definition xmlns="http://www.xbrl.org/2003/linkbase"> 039 - Disclosure - Note 8 - Income (Loss) Per Share - Summary of Earnings Per Share (Details) </link:definition> |
| <link:usedOn> link:calculationLink </link:usedOn> |
| <link:usedOn> link:definitionLink </link:usedOn> |
| <link:usedOn> link:presentationLink </link:usedOn> |
| </link:roleType> |
| | | <link:roleType id="statement-note-9-debt-details-textual" roleURI="http://investors.permapipe.com/20200731/role/statement-note-9-debt-details-textual"> |
| <link:definition xmlns="http://www.xbrl.org/2003/linkbase"> 040 - Disclosure - Note 9 - Debt (Details Textual) </link:definition> |
| <link:usedOn> link:calculationLink </link:usedOn> |
| <link:usedOn> link:definitionLink </link:usedOn> |
| <link:usedOn> link:presentationLink </link:usedOn> |
| </link:roleType> |
| | | <link:roleType id="statement-note-10-leases-details-textual" roleURI="http://investors.permapipe.com/20200731/role/statement-note-10-leases-details-textual"> |
| <link:definition xmlns="http://www.xbrl.org/2003/linkbase"> 041 - Disclosure - Note 10 - Leases (Details Textual) </link:definition> |
| <link:usedOn> link:calculationLink </link:usedOn> |
| <link:usedOn> link:definitionLink </link:usedOn> |
| <link:usedOn> link:presentationLink </link:usedOn> |
| </link:roleType> |
| | | <link:roleType id="statement-note-10-leases-supplemental-balance-sheet-information-related-to-leases-details" roleURI="http://investors.permapipe.com/20200731/role/statement-note-10-leases-supplemental-balance-sheet-information-related-to-leases-details"> |
| <link:definition xmlns="http://www.xbrl.org/2003/linkbase"> 042 - Disclosure - Note 10 - Leases - Supplemental Balance Sheet Information Related to Leases (Details) </link:definition> |
| <link:usedOn> link:calculationLink </link:usedOn> |
| <link:usedOn> link:definitionLink </link:usedOn> |
| <link:usedOn> link:presentationLink </link:usedOn> |
| </link:roleType> |
| | | <link:roleType id="statement-note-10-leases-lease-costs-details" roleURI="http://investors.permapipe.com/20200731/role/statement-note-10-leases-lease-costs-details"> |
| <link:definition xmlns="http://www.xbrl.org/2003/linkbase"> 043 - Disclosure - Note 10 - Leases - Lease Costs (Details) </link:definition> |
| <link:usedOn> link:calculationLink </link:usedOn> |
| <link:usedOn> link:definitionLink </link:usedOn> |
| <link:usedOn> link:presentationLink </link:usedOn> |
| </link:roleType> |
| | | <link:roleType id="statement-note-10-leases-supplemental-cash-flow-information-related-to-leases-details" roleURI="http://investors.permapipe.com/20200731/role/statement-note-10-leases-supplemental-cash-flow-information-related-to-leases-details"> |
| <link:definition xmlns="http://www.xbrl.org/2003/linkbase"> 044 - Disclosure - Note 10 - Leases - Supplemental Cash Flow Information Related to Leases (Details) </link:definition> |
| <link:usedOn> link:calculationLink </link:usedOn> |
| <link:usedOn> link:definitionLink </link:usedOn> |
| <link:usedOn> link:presentationLink </link:usedOn> |
| </link:roleType> |
| | | <link:roleType id="statement-note-10-leases-weightedaverage-lease-terms-and-discount-rates-details" roleURI="http://investors.permapipe.com/20200731/role/statement-note-10-leases-weightedaverage-lease-terms-and-discount-rates-details"> |
| <link:definition xmlns="http://www.xbrl.org/2003/linkbase"> 045 - Disclosure - Note 10 - Leases - Weighted-average Lease Terms and Discount Rates (Details) </link:definition> |
| <link:usedOn> link:calculationLink </link:usedOn> |
| <link:usedOn> link:definitionLink </link:usedOn> |
| <link:usedOn> link:presentationLink </link:usedOn> |
| </link:roleType> |
| | | <link:roleType id="statement-note-10-leases-maturities-of-lease-liabilities-details" roleURI="http://investors.permapipe.com/20200731/role/statement-note-10-leases-maturities-of-lease-liabilities-details"> |
| <link:definition xmlns="http://www.xbrl.org/2003/linkbase"> 046 - Disclosure - Note 10 - Leases - Maturities of Lease Liabilities (Details) </link:definition> |
| <link:usedOn> link:calculationLink </link:usedOn> |
| <link:usedOn> link:definitionLink </link:usedOn> |
| <link:usedOn> link:presentationLink </link:usedOn> |
| </link:roleType> |
| | | <link:roleType id="statement-note-11-restricted-cash-details-textual" roleURI="http://investors.permapipe.com/20200731/role/statement-note-11-restricted-cash-details-textual"> |
| <link:definition xmlns="http://www.xbrl.org/2003/linkbase"> 047 - Disclosure - Note 11 - Restricted Cash (Details Textual) </link:definition> |
| <link:usedOn> link:calculationLink </link:usedOn> |
| <link:usedOn> link:definitionLink </link:usedOn> |
| <link:usedOn> link:presentationLink </link:usedOn> |
| </link:roleType> |
| | | <link:roleType id="statement-note-11-restricted-cash-summary-of-cash-cash-equivalents-and-restricted-cash-details" roleURI="http://investors.permapipe.com/20200731/role/statement-note-11-restricted-cash-summary-of-cash-cash-equivalents-and-restricted-cash-details"> |
| <link:definition xmlns="http://www.xbrl.org/2003/linkbase"> 048 - Disclosure - Note 11 - Restricted Cash - Summary of Cash, Cash Equivalents and Restricted Cash (Details) </link:definition> |
| <link:usedOn> link:calculationLink </link:usedOn> |
| <link:usedOn> link:definitionLink </link:usedOn> |
| <link:usedOn> link:presentationLink </link:usedOn> |
| </link:roleType> |
| | | </xsd:appinfo> |
| | </xsd:annotation> |
| <xsd:element id="ppih_AccountsReceivableCertifiedInvoicesInProcessOfCollection" name="AccountsReceivableCertifiedInvoicesInProcessOfCollection" nillable="true" substitutionGroup="xbrli:item" type="xbrli:monetaryItemType" xbrli:balance="debit" xbrli:periodType="duration"/> |
| <xsd:element id="ppih_AccountsReceivableOutstandingForSeveralYears" name="AccountsReceivableOutstandingForSeveralYears" nillable="true" substitutionGroup="xbrli:item" type="xbrli:monetaryItemType" xbrli:balance="debit" xbrli:periodType="instant"/> |
| <xsd:element id="ppih_AllowanceForDoubtfulAccountsReceivableOutstandingForSeveralYears" name="AllowanceForDoubtfulAccountsReceivableOutstandingForSeveralYears" nillable="true" substitutionGroup="xbrli:item" type="xbrli:monetaryItemType" xbrli:balance="debit" xbrli:periodType="instant"/> |
| <xsd:element id="ppih_AssetsNoncurrentExcludingPropertyPlantAndEquipment" name="AssetsNoncurrentExcludingPropertyPlantAndEquipment" nillable="true" substitutionGroup="xbrli:item" type="xbrli:monetaryItemType" xbrli:balance="debit" xbrli:periodType="instant"/> |
| <xsd:element abstract="true" id="ppih_CanadianMortgageNoteMember" name="CanadianMortgageNoteMember" nillable="true" substitutionGroup="xbrli:item" type="nonnum:domainItemType" xbrli:periodType="duration"/> |
| <xsd:element abstract="true" id="ppih_CbeCorridorRateMember" name="CbeCorridorRateMember" nillable="true" substitutionGroup="xbrli:item" type="nonnum:domainItemType" xbrli:periodType="duration"/> |
| <xsd:element id="ppih_CommonStockIssuedUnderStockPlansNetOfSharesUsedForTaxWithholding" name="CommonStockIssuedUnderStockPlansNetOfSharesUsedForTaxWithholding" nillable="true" substitutionGroup="xbrli:item" type="xbrli:monetaryItemType" xbrli:balance="credit" xbrli:periodType="duration"/> |
| <xsd:element id="ppih_ContractWithCustomerAssetRevenueAndCostsIncurred" name="ContractWithCustomerAssetRevenueAndCostsIncurred" nillable="true" substitutionGroup="xbrli:item" type="xbrli:monetaryItemType" xbrli:balance="debit" xbrli:periodType="duration"/> |
| <xsd:element id="ppih_ContractWithCustomerLiabilityLiabilityIncurredDuringPeriod" name="ContractWithCustomerLiabilityLiabilityIncurredDuringPeriod" nillable="true" substitutionGroup="xbrli:item" type="xbrli:monetaryItemType" xbrli:balance="credit" xbrli:periodType="duration"/> |
| <xsd:element id="ppih_CostsIncurredForUncompletedContractsAnticipatedCollectionPeriod" name="CostsIncurredForUncompletedContractsAnticipatedCollectionPeriod" nillable="true" substitutionGroup="xbrli:item" type="xbrli:durationItemType" xbrli:periodType="duration"/> |
| <xsd:element id="ppih_CustomerDepositsCurrent1" name="CustomerDepositsCurrent1" nillable="true" substitutionGroup="xbrli:item" type="xbrli:monetaryItemType" xbrli:balance="credit" xbrli:periodType="instant"/> |
| <xsd:element id="ppih_DebtInstrumentAdjustableInterestRateCeiling" name="DebtInstrumentAdjustableInterestRateCeiling" nillable="true" substitutionGroup="xbrli:item" type="num:percentItemType" xbrli:periodType="instant"/> |
| <xsd:element id="ppih_DebtInstrumentAdjustableInterestRateFloor" name="DebtInstrumentAdjustableInterestRateFloor" nillable="true" substitutionGroup="xbrli:item" type="num:percentItemType" xbrli:periodType="instant"/> |
| <xsd:element id="ppih_DebtInstrumentAdjustableInterestRatePeriodCommencementDate" name="DebtInstrumentAdjustableInterestRatePeriodCommencementDate" nillable="true" substitutionGroup="xbrli:item" type="xbrli:dateItemType" xbrli:periodType="duration"/> |
| <xsd:element id="ppih_DebtInstrumentInterestRateMaximumAnnualIncrease" name="DebtInstrumentInterestRateMaximumAnnualIncrease" nillable="true" substitutionGroup="xbrli:item" type="num:percentItemType" xbrli:periodType="instant"/> |
| <xsd:element abstract="true" id="ppih_DocumentAndEntityInformation" name="DocumentAndEntityInformation" nillable="true" substitutionGroup="xbrli:item" type="xbrli:stringItemType" xbrli:periodType="duration"/> |
| <xsd:element abstract="true" id="ppih_EIBORMember" name="EIBORMember" nillable="true" substitutionGroup="xbrli:item" type="nonnum:domainItemType" xbrli:periodType="duration"/> |
| <xsd:element id="ppih_FinanceAndOperatingLeaseLiabilityMaturityTableTextBlock" name="FinanceAndOperatingLeaseLiabilityMaturityTableTextBlock" nillable="true" substitutionGroup="xbrli:item" type="nonnum:textBlockItemType" xbrli:periodType="duration"/> |
| <xsd:element id="ppih_FinanceLeasePrincipalPaymentsAndInterestPaymentOnLiability" name="FinanceLeasePrincipalPaymentsAndInterestPaymentOnLiability" nillable="true" substitutionGroup="xbrli:item" type="xbrli:monetaryItemType" xbrli:balance="credit" xbrli:periodType="duration"/> |
| <xsd:element abstract="true" id="ppih_FinanceLeasesAssetsMember" name="FinanceLeasesAssetsMember" nillable="true" substitutionGroup="xbrli:item" type="nonnum:domainItemType" xbrli:periodType="duration"/> |
| <xsd:element abstract="true" id="ppih_FinanceVehicleEquipmentOneMember" name="FinanceVehicleEquipmentOneMember" nillable="true" substitutionGroup="xbrli:item" type="nonnum:domainItemType" xbrli:periodType="duration"/> |
| <xsd:element abstract="true" id="ppih_FinanceVehicleEquipmentTwoMember" name="FinanceVehicleEquipmentTwoMember" nillable="true" substitutionGroup="xbrli:item" type="nonnum:domainItemType" xbrli:periodType="duration"/> |
| <xsd:element abstract="true" id="ppih_ForeignRevolvingLinesMember" name="ForeignRevolvingLinesMember" nillable="true" substitutionGroup="xbrli:item" type="nonnum:domainItemType" xbrli:periodType="duration"/> |
| <xsd:element id="ppih_IncreaseDecreaseInContractWithCustomerAssetAndLiability" name="IncreaseDecreaseInContractWithCustomerAssetAndLiability" nillable="true" substitutionGroup="xbrli:item" type="xbrli:monetaryItemType" xbrli:balance="debit" xbrli:periodType="duration"/> |
| <xsd:element id="ppih_IncreaseDecreaseInCustomerDeposits1" name="IncreaseDecreaseInCustomerDeposits1" nillable="true" substitutionGroup="xbrli:item" type="xbrli:monetaryItemType" xbrli:balance="debit" xbrli:periodType="duration"/> |
| <xsd:element abstract="true" id="ppih_InterestRate1Member" name="InterestRate1Member" nillable="true" substitutionGroup="xbrli:item" type="nonnum:domainItemType" xbrli:periodType="duration"/> |
| <xsd:element abstract="true" id="ppih_InterestRate2Member" name="InterestRate2Member" nillable="true" substitutionGroup="xbrli:item" type="nonnum:domainItemType" xbrli:periodType="duration"/> |
| <xsd:element id="ppih_InterestRateForFinanceLease" name="InterestRateForFinanceLease" nillable="true" substitutionGroup="xbrli:item" type="num:percentItemType" xbrli:periodType="duration"/> |
| <xsd:element id="ppih_LesseeOperatingAndFinanceLeasesTextBlock" name="LesseeOperatingAndFinanceLeasesTextBlock" nillable="true" substitutionGroup="xbrli:item" type="nonnum:textBlockItemType" xbrli:periodType="duration"/> |
| <xsd:element id="ppih_LineOfCreditFacilityCapitalExpendituresRestrictions" name="LineOfCreditFacilityCapitalExpendituresRestrictions" nillable="true" substitutionGroup="xbrli:item" type="xbrli:monetaryItemType" xbrli:balance="debit" xbrli:periodType="instant"/> |
| <xsd:element id="ppih_LineOfCreditFacilityCovenantTermsEbitdaRatioTermOne" name="LineOfCreditFacilityCovenantTermsEbitdaRatioTermOne" nillable="true" substitutionGroup="xbrli:item" type="xbrli:pureItemType" xbrli:periodType="instant"/> |
| <xsd:element id="ppih_LineOfCreditFacilityCovenantTermsEbitdaRatioTermTwo" name="LineOfCreditFacilityCovenantTermsEbitdaRatioTermTwo" nillable="true" substitutionGroup="xbrli:item" type="xbrli:pureItemType" xbrli:periodType="instant"/> |
| <xsd:element id="ppih_LongtermDebtCurrentMaturitiesExcludingNorthAmericanRevolvingLine" name="LongtermDebtCurrentMaturitiesExcludingNorthAmericanRevolvingLine" nillable="true" substitutionGroup="xbrli:item" type="xbrli:monetaryItemType" xbrli:balance="credit" xbrli:periodType="instant"/> |
| <xsd:element abstract="true" id="ppih_MortgageNoteSecuredByTennesseeManufacturingFacilityMember" name="MortgageNoteSecuredByTennesseeManufacturingFacilityMember" nillable="true" substitutionGroup="xbrli:item" type="nonnum:domainItemType" xbrli:periodType="duration"/> |
| <xsd:element abstract="true" id="ppih_NoteToFinancialStatementDetailsTextual" name="NoteToFinancialStatementDetailsTextual" nillable="true" substitutionGroup="xbrli:item" type="xbrli:stringItemType" xbrli:periodType="duration"/> |
| <xsd:element abstract="true" id="ppih_NotesToFinancialStatements" name="NotesToFinancialStatements" nillable="true" substitutionGroup="xbrli:item" type="xbrli:stringItemType" xbrli:periodType="duration"/> |
| <xsd:element abstract="true" id="ppih_NotesToFinancialStatementsAbstract" name="NotesToFinancialStatementsAbstract" nillable="true" substitutionGroup="xbrli:item" type="xbrli:stringItemType" xbrli:periodType="duration"/> |
| <xsd:element id="ppih_NumberOfMajorCustomers" name="NumberOfMajorCustomers" nillable="true" substitutionGroup="xbrli:item" type="xbrli:integerItemType" xbrli:periodType="duration"/> |
| <xsd:element abstract="true" id="ppih_OneCustomerMember" name="OneCustomerMember" nillable="true" substitutionGroup="xbrli:item" type="nonnum:domainItemType" xbrli:periodType="duration"/> |
| <xsd:element id="ppih_OutsideCommissionsPayableCurrent" name="OutsideCommissionsPayableCurrent" nillable="true" substitutionGroup="xbrli:item" type="xbrli:monetaryItemType" xbrli:balance="credit" xbrli:periodType="instant"/> |
| <xsd:element abstract="true" id="ppih_PaycheckProtectionProgramCARESActMember" name="PaycheckProtectionProgramCARESActMember" nillable="true" substitutionGroup="xbrli:item" type="nonnum:domainItemType" xbrli:periodType="duration"/> |
| <xsd:element id="ppih_PercentOfProceedsFromIssuanceOfDebtUsedForPayrollRelatedExpenses" name="PercentOfProceedsFromIssuanceOfDebtUsedForPayrollRelatedExpenses" nillable="true" substitutionGroup="xbrli:item" type="num:percentItemType" xbrli:periodType="duration"/> |
| <xsd:element id="ppih_PercentOfRevenueFromContractWithCustomerIncludingAssessedTax" name="PercentOfRevenueFromContractWithCustomerIncludingAssessedTax" nillable="true" substitutionGroup="xbrli:item" type="num:percentItemType" xbrli:periodType="duration"/> |
| <xsd:element id="ppih_ProceedsFromCollectionOfAccountsReceivableOutstandingForSeveralYears" name="ProceedsFromCollectionOfAccountsReceivableOutstandingForSeveralYears" nillable="true" substitutionGroup="xbrli:item" type="xbrli:monetaryItemType" xbrli:balance="debit" xbrli:periodType="duration"/> |
| <xsd:element id="ppih_ProceedsFromPaymentsForStockOptionsExercisedAndTaxesRelatedToRestrictedSharesVested" name="ProceedsFromPaymentsForStockOptionsExercisedAndTaxesRelatedToRestrictedSharesVested" nillable="true" substitutionGroup="xbrli:item" type="xbrli:monetaryItemType" xbrli:balance="debit" xbrli:periodType="duration"/> |
| <xsd:element id="ppih_RetentionReceivable" name="RetentionReceivable" nillable="true" substitutionGroup="xbrli:item" type="xbrli:monetaryItemType" xbrli:balance="debit" xbrli:periodType="instant"/> |
| <xsd:element abstract="true" id="ppih_RevolvingCreditLinesUsedByMiddleEasternSubsidiaries1Member" name="RevolvingCreditLinesUsedByMiddleEasternSubsidiaries1Member" nillable="true" substitutionGroup="xbrli:item" type="nonnum:domainItemType" xbrli:periodType="duration"/> |
| <xsd:element abstract="true" id="ppih_RevolvingCreditLinesUsedByMiddleEasternSubsidiaries2Member" name="RevolvingCreditLinesUsedByMiddleEasternSubsidiaries2Member" nillable="true" substitutionGroup="xbrli:item" type="nonnum:domainItemType" xbrli:periodType="duration"/> |
| <xsd:element abstract="true" id="ppih_RevolvingCreditLinesUsedByMiddleEasternSubsidiaries3Member" name="RevolvingCreditLinesUsedByMiddleEasternSubsidiaries3Member" nillable="true" substitutionGroup="xbrli:item" type="nonnum:domainItemType" xbrli:periodType="duration"/> |
| <xsd:element abstract="true" id="ppih_RevolvingLinesNorthAmericaMember" name="RevolvingLinesNorthAmericaMember" nillable="true" substitutionGroup="xbrli:item" type="nonnum:domainItemType" xbrli:periodType="duration"/> |
| <xsd:element abstract="true" id="ppih_SpecialtyPipingSystemsAndCoatingMember" name="SpecialtyPipingSystemsAndCoatingMember" nillable="true" substitutionGroup="xbrli:item" type="nonnum:domainItemType" xbrli:periodType="duration"/> |
| <xsd:element id="ppih_SupplementalBalanceSheetInformationRelatedToLeasesTableTextBlock" name="SupplementalBalanceSheetInformationRelatedToLeasesTableTextBlock" nillable="true" substitutionGroup="xbrli:item" type="nonnum:textBlockItemType" xbrli:periodType="duration"/> |
| <xsd:element id="ppih_SupplementalCashFlowInformationRelatedLeasesTableTextBlock" name="SupplementalCashFlowInformationRelatedLeasesTableTextBlock" nillable="true" substitutionGroup="xbrli:item" type="nonnum:textBlockItemType" xbrli:periodType="duration"/> |
| <xsd:element abstract="true" id="ppih_TransferredAtPointInTimeUsingInputMethodMember" name="TransferredAtPointInTimeUsingInputMethodMember" nillable="true" substitutionGroup="xbrli:item" type="nonnum:domainItemType" xbrli:periodType="duration"/> |
| <xsd:element abstract="true" id="ppih_TransferredAtPointInTimeUsingOutputMethodMember" name="TransferredAtPointInTimeUsingOutputMethodMember" nillable="true" substitutionGroup="xbrli:item" type="nonnum:domainItemType" xbrli:periodType="duration"/> |
| <xsd:element abstract="true" id="ppih_UnvestedOptionMember" name="UnvestedOptionMember" nillable="true" substitutionGroup="xbrli:item" type="nonnum:domainItemType" xbrli:periodType="duration"/> |
| <xsd:element id="ppih_WeightedaverageLeaseTermsAndDiscountRatesTableTextBlock" name="WeightedaverageLeaseTermsAndDiscountRatesTableTextBlock" nillable="true" substitutionGroup="xbrli:item" type="nonnum:textBlockItemType" xbrli:periodType="duration"/> |
| <xsd:element abstract="true" id="ppih_statement-statement-note-10-leases-lease-costs-details" name="statement-statement-note-10-leases-lease-costs-details" nillable="true" substitutionGroup="xbrli:item" type="xbrli:stringItemType" xbrli:periodType="duration"/> |
| <xsd:element abstract="true" id="ppih_statement-statement-note-10-leases-maturities-of-lease-liabilities-details" name="statement-statement-note-10-leases-maturities-of-lease-liabilities-details" nillable="true" substitutionGroup="xbrli:item" type="xbrli:stringItemType" xbrli:periodType="duration"/> |
| <xsd:element abstract="true" id="ppih_statement-statement-note-10-leases-supplemental-balance-sheet-information-related-to-leases-details" name="statement-statement-note-10-leases-supplemental-balance-sheet-information-related-to-leases-details" nillable="true" substitutionGroup="xbrli:item" type="xbrli:stringItemType" xbrli:periodType="duration"/> |
| <xsd:element abstract="true" id="ppih_statement-statement-note-10-leases-supplemental-cash-flow-information-related-to-leases-details" name="statement-statement-note-10-leases-supplemental-cash-flow-information-related-to-leases-details" nillable="true" substitutionGroup="xbrli:item" type="xbrli:stringItemType" xbrli:periodType="duration"/> |
| <xsd:element abstract="true" id="ppih_statement-statement-note-10-leases-tables" name="statement-statement-note-10-leases-tables" nillable="true" substitutionGroup="xbrli:item" type="xbrli:stringItemType" xbrli:periodType="duration"/> |
| <xsd:element abstract="true" id="ppih_statement-statement-note-10-leases-weightedaverage-lease-terms-and-discount-rates-details" name="statement-statement-note-10-leases-weightedaverage-lease-terms-and-discount-rates-details" nillable="true" substitutionGroup="xbrli:item" type="xbrli:stringItemType" xbrli:periodType="duration"/> |
| <xsd:element abstract="true" id="ppih_statement-statement-note-11-restricted-cash-summary-of-cash-cash-equivalents-and-restricted-cash-details" name="statement-statement-note-11-restricted-cash-summary-of-cash-cash-equivalents-and-restricted-cash-details" nillable="true" substitutionGroup="xbrli:item" type="xbrli:stringItemType" xbrli:periodType="duration"/> |
| <xsd:element abstract="true" id="ppih_statement-statement-note-11-restricted-cash-tables" name="statement-statement-note-11-restricted-cash-tables" nillable="true" substitutionGroup="xbrli:item" type="xbrli:stringItemType" xbrli:periodType="duration"/> |
| <xsd:element abstract="true" id="ppih_statement-statement-note-4-revenue-recognition-contract-with-customer-asset-and-liability-details" name="statement-statement-note-4-revenue-recognition-contract-with-customer-asset-and-liability-details" nillable="true" substitutionGroup="xbrli:item" type="xbrli:stringItemType" xbrli:periodType="duration"/> |
| <xsd:element abstract="true" id="ppih_statement-statement-note-4-revenue-recognition-revenues-by-revenue-class-details" name="statement-statement-note-4-revenue-recognition-revenues-by-revenue-class-details" nillable="true" substitutionGroup="xbrli:item" type="xbrli:stringItemType" xbrli:periodType="duration"/> |
| <xsd:element abstract="true" id="ppih_statement-statement-note-4-revenue-recognition-tables" name="statement-statement-note-4-revenue-recognition-tables" nillable="true" substitutionGroup="xbrli:item" type="xbrli:stringItemType" xbrli:periodType="duration"/> |
| <xsd:element abstract="true" id="ppih_statement-statement-note-6-impairment-of-longlived-assets-goodwill-details" name="statement-statement-note-6-impairment-of-longlived-assets-goodwill-details" nillable="true" substitutionGroup="xbrli:item" type="xbrli:stringItemType" xbrli:periodType="duration"/> |
| <xsd:element abstract="true" id="ppih_statement-statement-note-6-impairment-of-longlived-assets-tables" name="statement-statement-note-6-impairment-of-longlived-assets-tables" nillable="true" substitutionGroup="xbrli:item" type="xbrli:stringItemType" xbrli:periodType="duration"/> |
| <xsd:element abstract="true" id="ppih_statement-statement-note-7-stockbased-compensation-restricted-stock-activity-details" name="statement-statement-note-7-stockbased-compensation-restricted-stock-activity-details" nillable="true" substitutionGroup="xbrli:item" type="xbrli:stringItemType" xbrli:periodType="duration"/> |
| <xsd:element abstract="true" id="ppih_statement-statement-note-7-stockbased-compensation-stock-option-activity-details" name="statement-statement-note-7-stockbased-compensation-stock-option-activity-details" nillable="true" substitutionGroup="xbrli:item" type="xbrli:stringItemType" xbrli:periodType="duration"/> |
| <xsd:element abstract="true" id="ppih_statement-statement-note-7-stockbased-compensation-stockbased-compensation-expense-details" name="statement-statement-note-7-stockbased-compensation-stockbased-compensation-expense-details" nillable="true" substitutionGroup="xbrli:item" type="xbrli:stringItemType" xbrli:periodType="duration"/> |
| <xsd:element abstract="true" id="ppih_statement-statement-note-7-stockbased-compensation-tables" name="statement-statement-note-7-stockbased-compensation-tables" nillable="true" substitutionGroup="xbrli:item" type="xbrli:stringItemType" xbrli:periodType="duration"/> |
| <xsd:element abstract="true" id="ppih_statement-statement-note-7-stockbased-compensation-unvested-option-activity-details" name="statement-statement-note-7-stockbased-compensation-unvested-option-activity-details" nillable="true" substitutionGroup="xbrli:item" type="xbrli:stringItemType" xbrli:periodType="duration"/> |
| <xsd:element abstract="true" id="ppih_statement-statement-note-8-income-loss-per-share-summary-of-earnings-per-share-details" name="statement-statement-note-8-income-loss-per-share-summary-of-earnings-per-share-details" nillable="true" substitutionGroup="xbrli:item" type="xbrli:stringItemType" xbrli:periodType="duration"/> |
| <xsd:element abstract="true" id="ppih_statement-statement-note-8-income-loss-per-share-tables" name="statement-statement-note-8-income-loss-per-share-tables" nillable="true" substitutionGroup="xbrli:item" type="xbrli:stringItemType" xbrli:periodType="duration"/> |
| </xsd:schema> |